summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/__init__.py141
-rw-r--r--lib/spack/spack/globals.py139
-rw-r--r--lib/spack/spack/test/all_packages.py37
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)