commit 0ecd3ddaef4dad35f20301593f8c101422ee600264ca7db1b5120e572301afe7 Author: Christian Goll Date: Thu Nov 19 14:49:24 2020 +0000 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 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/Make-spack-paths-compliant-to-distro-installation.patch b/Make-spack-paths-compliant-to-distro-installation.patch new file mode 100644 index 0000000..3cca9a2 --- /dev/null +++ b/Make-spack-paths-compliant-to-distro-installation.patch @@ -0,0 +1,69 @@ +From: Egbert Eich +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 +--- + 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") + diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..989f403 --- /dev/null +++ b/README.SUSE @@ -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 + +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. diff --git a/fix-tumbleweed-naming.patch b/fix-tumbleweed-naming.patch new file mode 100644 index 0000000..fe2044a --- /dev/null +++ b/fix-tumbleweed-naming.patch @@ -0,0 +1,28 @@ +From dce8997ce770ec420b2946936caf92760638d439 Mon Sep 17 00:00:00 2001 +From: Christian Goll +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 + diff --git a/spack-0.15.4.tar.gz b/spack-0.15.4.tar.gz new file mode 100644 index 0000000..1208486 --- /dev/null +++ b/spack-0.15.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce195bc79956675d813cc7837840517135064dcbe211e797b7d171cd8810d31d +size 4805201 diff --git a/spack-recipes-rpmlintrc b/spack-recipes-rpmlintrc new file mode 100644 index 0000000..7463f8a --- /dev/null +++ b/spack-recipes-rpmlintrc @@ -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.*") diff --git a/spack.changes b/spack.changes new file mode 100644 index 0000000..4b6724a --- /dev/null +++ b/spack.changes @@ -0,0 +1,22 @@ +------------------------------------------------------------------- +Mon Nov 16 14:42:32 UTC 2020 - Christian Goll + +- added profile file for csh +- enabled projections +- updated README.SUSE + +------------------------------------------------------------------- +Wed Nov 11 19:56:11 UTC 2020 - Christian Goll + +- 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 + +- Initial release. Version 0.15.4 + * Make-spack-paths-compliant-to-distro-installation.patch + Make spack paths compliant to distro installation. diff --git a/spack.spec b/spack.spec new file mode 100644 index 0000000..c2b602b --- /dev/null +++ b/spack.spec @@ -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 < %{buildroot}/%{_sysconfdir}/profile.d/spack.sh < /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 <& /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 </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