diff options
-rw-r--r-- | lib/spack/spack/__init__.py | 141 | ||||
-rw-r--r-- | lib/spack/spack/globals.py | 139 | ||||
-rw-r--r-- | lib/spack/spack/test/all_packages.py | 37 |
3 files changed, 172 insertions, 145 deletions
diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index 77aad98524..42769f0bdb 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -22,10 +22,139 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## -from globals import * -from util import * -from error import * -from package import Package -from relations import depends_on, provides, patch -from multimethod import when +# +# When packages call 'from spack import *', this is what is brought in. +# +# Spack internal code calls 'import spack' and accesses other +# variables (spack.db, paths, etc.) directly. +# +__all__ = ['Package', 'when', 'provides', 'depends_on', 'patch'] + +import os +import tempfile +from llnl.util.filesystem import * + +# This lives in $prefix/lib/spac/spack/__file__ +prefix = ancestor(__file__, 4) + +# The spack script itself +spack_file = join_path(prefix, "bin", "spack") + +# spack directory hierarchy +etc_path = join_path(prefix, "etc") +lib_path = join_path(prefix, "lib", "spack") +build_env_path = join_path(lib_path, "env") +module_path = join_path(lib_path, "spack") +compilers_path = join_path(module_path, "compilers") +test_path = join_path(module_path, "test") +var_path = join_path(prefix, "var", "spack") +stage_path = join_path(var_path, "stage") +install_path = join_path(prefix, "opt") + +# +# Place to look for usable compiler versions. +# +compiler_version_path = join_path(var_path, "compilers") + +# +# Set up the packages database. +# +from spack.packages import PackageDB +packages_path = join_path(var_path, "packages") +db = PackageDB(packages_path) + +# +# This is the path to mock packages used by spack for testing. +# +mock_packages_path = join_path(var_path, "mock_packages") + +# +# This controls how spack lays out install prefixes and +# stage directories. +# +from spack.directory_layout import SpecHashDirectoryLayout +install_layout = SpecHashDirectoryLayout(install_path, prefix_size=6) + +# +# This controls how things are concretized in spack. +# Replace it with a subclass if you want different +# policies. +# +from spack.concretize import DefaultConcretizer +concretizer = DefaultConcretizer() + +# Version information +from spack.version import Version +spack_version = Version("1.0") + +# +# Executables used by Spack +# +from spack.util.executable import Executable, which + +# User's editor from the environment +editor = Executable(os.environ.get("EDITOR", "")) + +# Curl tool for fetching files. +curl = which("curl", required=True) + +# Whether to build in tmp space or directly in the stage_path. +# If this is true, then spack will make stage directories in +# a tmp filesystem, and it will symlink them into stage_path. +use_tmp_stage = True + +# Locations to use for staging and building, in order of preference +# Use a %u to add a username to the stage paths here, in case this +# is a shared filesystem. Spack will use the first of these paths +# that it can create. +tmp_dirs = [] +_default_tmp = tempfile.gettempdir() +if _default_tmp != os.getcwd(): + tmp_dirs.append(os.path.join(_default_tmp, 'spack-stage')) +tmp_dirs.append('/nfs/tmp2/%u/spack-stage') + +# Whether spack should allow installation of unsafe versions of +# software. "Unsafe" versions are ones it doesn't have a checksum +# for. +do_checksum = True + +# +# SYS_TYPE to use for the spack installation. +# Value of this determines what platform spack thinks it is by +# default. You can assign three types of values: +# 1. None +# Spack will try to determine the sys_type automatically. +# +# 2. A string +# Spack will assume that the sys_type is hardcoded to the value. +# +# 3. A function that returns a string: +# Spack will use this function to determine the sys_type. +# +sys_type = None + +# +# Places to download tarballs from. +# +# TODO: move to configuration. +# +# Examples: +# +# For a local directory: +# mirrors = ['file:///Users/gamblin2/spack-mirror'] +# +# For a website: +# mirrors = ['http://spackports.org/spack-mirror/'] +# +# For no mirrors: +# mirrors = [] +# +mirrors = [] + +# +# Extra imports that should be generally usable from package.py files. +# +from spack.package import Package +from spack.relations import depends_on, provides, patch +from spack.multimethod import when diff --git a/lib/spack/spack/globals.py b/lib/spack/spack/globals.py deleted file mode 100644 index c67cb02060..0000000000 --- a/lib/spack/spack/globals.py +++ /dev/null @@ -1,139 +0,0 @@ -############################################################################## -# Copyright (c) 2013, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. -# -# This file is part of Spack. -# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://scalability-llnl.github.io/spack -# Please also see the LICENSE file for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License (as published by -# the Free Software Foundation) version 2.1 dated February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## -import os -import tempfile - -from llnl.util.filesystem import * - -from spack.version import Version -from spack.util.executable import * -from spack.directory_layout import SpecHashDirectoryLayout -from spack.concretize import DefaultConcretizer -from spack.packages import PackageDB - -# This lives in $prefix/lib/spac/spack/__file__ -prefix = ancestor(__file__, 4) - -# The spack script itself -spack_file = join_path(prefix, "bin", "spack") - -# spack directory hierarchy -lib_path = join_path(prefix, "lib", "spack") -build_env_path = join_path(lib_path, "env") -module_path = join_path(lib_path, "spack") -compilers_path = join_path(module_path, "compilers") -test_path = join_path(module_path, "test") -var_path = join_path(prefix, "var", "spack") -stage_path = join_path(var_path, "stage") - -install_path = join_path(prefix, "opt") - -# -# Place to look for usable compiler versions. -# -compiler_version_path = join_path(var_path, "compilers") - -# -# Set up the packages database. -# -packages_path = join_path(var_path, "packages") -db = PackageDB(packages_path) - -# -# This is the path to mock packages used by spack for testing. -# -mock_packages_path = join_path(var_path, "mock_packages") - -# -# This controls how spack lays out install prefixes and -# stage directories. -# -install_layout = SpecHashDirectoryLayout(install_path, prefix_size=6) - -# -# This controls how things are concretized in spack. -# Replace it with a subclass if you want different -# policies. -# -concretizer = DefaultConcretizer() - -# Version information -spack_version = Version("1.0") - -# User's editor from the environment -editor = Executable(os.environ.get("EDITOR", "")) - -# Curl tool for fetching files. -curl = which("curl", required=True) - -# Whether to build in tmp space or directly in the stage_path. -# If this is true, then spack will make stage directories in -# a tmp filesystem, and it will symlink them into stage_path. -use_tmp_stage = True - -# Locations to use for staging and building, in order of preference -# Use a %u to add a username to the stage paths here, in case this -# is a shared filesystem. Spack will use the first of these paths -# that it can create. -tmp_dirs = [] -_default_tmp = tempfile.gettempdir() -if _default_tmp != os.getcwd(): - tmp_dirs.append(os.path.join(_default_tmp, 'spack-stage')) -tmp_dirs.append('/nfs/tmp2/%u/spack-stage') - -# Whether spack should allow installation of unsafe versions of -# software. "Unsafe" versions are ones it doesn't have a checksum -# for. -do_checksum = True - -# -# SYS_TYPE to use for the spack installation. -# Value of this determines what platform spack thinks it is by -# default. You can assign three types of values: -# 1. None -# Spack will try to determine the sys_type automatically. -# -# 2. A string -# Spack will assume that the sys_type is hardcoded to the value. -# -# 3. A function that returns a string: -# Spack will use this function to determine the sys_type. -# -sys_type = None - -# -# Places to download tarballs from. Examples: -# -# For a local directory: -# mirrors = ['file:///Users/gamblin2/spack-mirror'] -# -# For a website: -# mirrors = ['http://spackports.org/spack-mirror/'] -# -# For no mirrors: -# mirrors = [] -# -mirrors = [] - diff --git a/lib/spack/spack/test/all_packages.py b/lib/spack/spack/test/all_packages.py new file mode 100644 index 0000000000..a525f3c012 --- /dev/null +++ b/lib/spack/spack/test/all_packages.py @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2013, Lawrence Livermore National Security, LLC. +# Produced at the Lawrence Livermore National Laboratory. +# +# This file is part of Spack. +# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. +# LLNL-CODE-647188 +# +# For details, see https://scalability-llnl.github.io/spack +# Please also see the LICENSE file for our notice and the LGPL. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License (as published by +# the Free Software Foundation) version 2.1 dated February 1999. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and +# conditions of the GNU General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +############################################################################## +import unittest +import spack + + +class AllPackagesTest(unittest.TestCase): + """This test makes sure that each package in Spack is possible to + import. If it's not then there's some basic error either + in the package or in some change that has been made in Spack. + """ + + def test_get_all_packages(self): + for name in spack.db.all_package_names(): + spack.db.get(name) |