diff --git a/bin/spack b/bin/spack index 60a2ef4c3ad742d403738566aaa099cf247eea1c..b922fc547936dcfadbe8af86ee0c2fcc70b19e11 100755 --- a/bin/spack +++ b/bin/spack @@ -39,6 +39,12 @@ SPACK_PREFIX = os.path.dirname(os.path.dirname(SPACK_FILE)) SPACK_LIB_PATH = os.path.join(SPACK_PREFIX, "lib", "spack") sys.path.insert(0, SPACK_LIB_PATH) +# If there is no working directory, use the spack prefix. +try: + os.getcwd() +except OSError: + os.chdir(SPACK_PREFIX) + # clean up the scope and start using spack package instead. del SPACK_FILE, SPACK_PREFIX, SPACK_LIB_PATH import llnl.util.tty as tty @@ -74,10 +80,8 @@ args = parser.parse_args() spack.verbose = args.verbose spack.debug = args.debug if args.mock: - from llnl.util.filesystem import join_path from spack.packages import PackageDB - mock_path = join_path(spack.module_path, 'test', 'mock_packages') - spack.db = PackageDB(mock_path) + spack.db = PackageDB(spack.mock_packages_path) # If the user asked for it, don't check ssl certs. if args.insecure: diff --git a/lib/spack/spack/globals.py b/lib/spack/spack/globals.py index 20801447fa81718144750074f79b88a8df58c43f..4ff50a3e7e954d44b9ea53c448c0acc8bf71722d 100644 --- a/lib/spack/spack/globals.py +++ b/lib/spack/spack/globals.py @@ -53,8 +53,13 @@ # # Set up the packages database. # -db = PackageDB(join_path(module_path, "packages")) +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 diff --git a/lib/spack/spack/packages/__init__.py b/lib/spack/spack/packages.py similarity index 97% rename from lib/spack/spack/packages/__init__.py rename to lib/spack/spack/packages.py index beb8ecf6abc093aeb992137564ae5d7c17175183..732ced9bf22de30028e2c624707ab2e921569539 100644 --- a/lib/spack/spack/packages/__init__.py +++ b/lib/spack/spack/packages.py @@ -200,10 +200,6 @@ def get_class_for_package_name(self, pkg_name): else: raise UnknownPackageError(pkg_name) - # Figure out pacakges module based on self.root - if not re.match(r'%s' % spack.module_path, self.root): - raise RuntimeError("Packages path is not a submodule of spack.") - class_name = class_name_for_package_name(pkg_name) try: module_name = _imported_packages_module + '.' + pkg_name diff --git a/lib/spack/spack/test/mock_packages_test.py b/lib/spack/spack/test/mock_packages_test.py index f300995d7e6ea20bb54bc82247b155603f07e5c8..e9a8113c09f566b996edf299e4de169ac54f90a6 100644 --- a/lib/spack/spack/test/mock_packages_test.py +++ b/lib/spack/spack/test/mock_packages_test.py @@ -24,15 +24,10 @@ ############################################################################## import unittest -from llnl.util.lang import list_modules -from llnl.util.filesystem import join_path - import spack from spack.packages import PackageDB from spack.spec import Spec -mock_packages_path = join_path(spack.module_path, 'test', 'mock_packages') - def set_pkg_dep(pkg, spec): """Alters dependence information for a pacakge. Use this to mock up constraints. @@ -48,7 +43,7 @@ def setUp(self): # us to set up contrived packages that don't interfere with # real ones. self.real_db = spack.db - spack.db = PackageDB(mock_packages_path) + spack.db = PackageDB(spack.mock_packages_path) @classmethod diff --git a/lib/spack/spack/test/packages.py b/lib/spack/spack/test/packages.py index 146700948f9f427068a47b5f54795bb9e7f828a3..1b2e0ab07a084835f612f016e87edc34c73c9ba2 100644 --- a/lib/spack/spack/test/packages.py +++ b/lib/spack/spack/test/packages.py @@ -24,9 +24,10 @@ ############################################################################## import unittest +from llnl.util.filesystem import join_path + import spack import spack.packages as packages - from spack.test.mock_packages_test import * @@ -43,7 +44,7 @@ def test_package_name(self): def test_package_filename(self): filename = spack.db.filename_for_package_name('mpich') - self.assertEqual(filename, join_path(mock_packages_path, 'mpich', 'package.py')) + self.assertEqual(filename, join_path(spack.mock_packages_path, 'mpich', 'package.py')) def test_package_name(self): @@ -53,7 +54,7 @@ def test_package_name(self): def test_nonexisting_package_filename(self): filename = spack.db.filename_for_package_name('some-nonexisting-package') - self.assertEqual(filename, join_path(mock_packages_path, 'some-nonexisting-package', 'package.py')) + self.assertEqual(filename, join_path(spack.mock_packages_path, 'some-nonexisting-package', 'package.py')) def test_package_class_names(self): diff --git a/lib/spack/spack/test/mock_packages/callpath/package.py b/var/spack/mock_packages/callpath/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/callpath/package.py rename to var/spack/mock_packages/callpath/package.py diff --git a/lib/spack/spack/test/mock_packages/direct_mpich/package.py b/var/spack/mock_packages/direct_mpich/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/direct_mpich/package.py rename to var/spack/mock_packages/direct_mpich/package.py diff --git a/lib/spack/spack/test/mock_packages/dyninst/package.py b/var/spack/mock_packages/dyninst/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/dyninst/package.py rename to var/spack/mock_packages/dyninst/package.py diff --git a/lib/spack/spack/test/mock_packages/fake/package.py b/var/spack/mock_packages/fake/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/fake/package.py rename to var/spack/mock_packages/fake/package.py diff --git a/lib/spack/spack/test/mock_packages/indirect_mpich/package.py b/var/spack/mock_packages/indirect_mpich/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/indirect_mpich/package.py rename to var/spack/mock_packages/indirect_mpich/package.py diff --git a/lib/spack/spack/test/mock_packages/libdwarf/package.py b/var/spack/mock_packages/libdwarf/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/libdwarf/package.py rename to var/spack/mock_packages/libdwarf/package.py diff --git a/lib/spack/spack/test/mock_packages/libelf/package.py b/var/spack/mock_packages/libelf/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/libelf/package.py rename to var/spack/mock_packages/libelf/package.py diff --git a/lib/spack/spack/test/mock_packages/mpich/package.py b/var/spack/mock_packages/mpich/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/mpich/package.py rename to var/spack/mock_packages/mpich/package.py diff --git a/lib/spack/spack/test/mock_packages/mpich2/package.py b/var/spack/mock_packages/mpich2/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/mpich2/package.py rename to var/spack/mock_packages/mpich2/package.py diff --git a/lib/spack/spack/test/mock_packages/mpileaks/package.py b/var/spack/mock_packages/mpileaks/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/mpileaks/package.py rename to var/spack/mock_packages/mpileaks/package.py diff --git a/lib/spack/spack/test/mock_packages/multimethod/package.py b/var/spack/mock_packages/multimethod/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/multimethod/package.py rename to var/spack/mock_packages/multimethod/package.py diff --git a/lib/spack/spack/test/mock_packages/trivial_install_test_package/package.py b/var/spack/mock_packages/trivial_install_test_package/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/trivial_install_test_package/package.py rename to var/spack/mock_packages/trivial_install_test_package/package.py diff --git a/lib/spack/spack/test/mock_packages/zmpi/package.py b/var/spack/mock_packages/zmpi/package.py similarity index 100% rename from lib/spack/spack/test/mock_packages/zmpi/package.py rename to var/spack/mock_packages/zmpi/package.py diff --git a/lib/spack/spack/packages/callpath/package.py b/var/spack/packages/callpath/package.py similarity index 100% rename from lib/spack/spack/packages/callpath/package.py rename to var/spack/packages/callpath/package.py diff --git a/lib/spack/spack/packages/cmake/package.py b/var/spack/packages/cmake/package.py similarity index 100% rename from lib/spack/spack/packages/cmake/package.py rename to var/spack/packages/cmake/package.py diff --git a/lib/spack/spack/packages/dyninst/package.py b/var/spack/packages/dyninst/package.py similarity index 100% rename from lib/spack/spack/packages/dyninst/package.py rename to var/spack/packages/dyninst/package.py diff --git a/lib/spack/spack/packages/graphlib/package.py b/var/spack/packages/graphlib/package.py similarity index 100% rename from lib/spack/spack/packages/graphlib/package.py rename to var/spack/packages/graphlib/package.py diff --git a/lib/spack/spack/packages/launchmon/package.py b/var/spack/packages/launchmon/package.py similarity index 100% rename from lib/spack/spack/packages/launchmon/package.py rename to var/spack/packages/launchmon/package.py diff --git a/lib/spack/spack/packages/launchmon/patch.lmon_install_dir b/var/spack/packages/launchmon/patch.lmon_install_dir similarity index 100% rename from lib/spack/spack/packages/launchmon/patch.lmon_install_dir rename to var/spack/packages/launchmon/patch.lmon_install_dir diff --git a/lib/spack/spack/packages/libdwarf/package.py b/var/spack/packages/libdwarf/package.py similarity index 100% rename from lib/spack/spack/packages/libdwarf/package.py rename to var/spack/packages/libdwarf/package.py diff --git a/lib/spack/spack/packages/libelf/package.py b/var/spack/packages/libelf/package.py similarity index 100% rename from lib/spack/spack/packages/libelf/package.py rename to var/spack/packages/libelf/package.py diff --git a/lib/spack/spack/packages/libunwind/package.py b/var/spack/packages/libunwind/package.py similarity index 100% rename from lib/spack/spack/packages/libunwind/package.py rename to var/spack/packages/libunwind/package.py diff --git a/lib/spack/spack/packages/mpich/package.py b/var/spack/packages/mpich/package.py similarity index 100% rename from lib/spack/spack/packages/mpich/package.py rename to var/spack/packages/mpich/package.py diff --git a/lib/spack/spack/packages/mpileaks/package.py b/var/spack/packages/mpileaks/package.py similarity index 100% rename from lib/spack/spack/packages/mpileaks/package.py rename to var/spack/packages/mpileaks/package.py diff --git a/lib/spack/spack/packages/mrnet/package.py b/var/spack/packages/mrnet/package.py similarity index 100% rename from lib/spack/spack/packages/mrnet/package.py rename to var/spack/packages/mrnet/package.py diff --git a/lib/spack/spack/packages/mvapich2/ad_lustre_rwcontig_open_source.patch b/var/spack/packages/mvapich2/ad_lustre_rwcontig_open_source.patch similarity index 100% rename from lib/spack/spack/packages/mvapich2/ad_lustre_rwcontig_open_source.patch rename to var/spack/packages/mvapich2/ad_lustre_rwcontig_open_source.patch diff --git a/lib/spack/spack/packages/mvapich2/package.py b/var/spack/packages/mvapich2/package.py similarity index 100% rename from lib/spack/spack/packages/mvapich2/package.py rename to var/spack/packages/mvapich2/package.py diff --git a/lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch b/var/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch similarity index 100% rename from lib/spack/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch rename to var/spack/packages/openmpi/ad_lustre_rwcontig_open_source.patch diff --git a/lib/spack/spack/packages/openmpi/llnl-platforms.patch b/var/spack/packages/openmpi/llnl-platforms.patch similarity index 100% rename from lib/spack/spack/packages/openmpi/llnl-platforms.patch rename to var/spack/packages/openmpi/llnl-platforms.patch diff --git a/lib/spack/spack/packages/openmpi/package.py b/var/spack/packages/openmpi/package.py similarity index 100% rename from lib/spack/spack/packages/openmpi/package.py rename to var/spack/packages/openmpi/package.py diff --git a/lib/spack/spack/packages/pmgr_collective/package.py b/var/spack/packages/pmgr_collective/package.py similarity index 100% rename from lib/spack/spack/packages/pmgr_collective/package.py rename to var/spack/packages/pmgr_collective/package.py diff --git a/lib/spack/spack/packages/scr/package.py b/var/spack/packages/scr/package.py similarity index 100% rename from lib/spack/spack/packages/scr/package.py rename to var/spack/packages/scr/package.py diff --git a/lib/spack/spack/packages/spindle/package.py b/var/spack/packages/spindle/package.py similarity index 100% rename from lib/spack/spack/packages/spindle/package.py rename to var/spack/packages/spindle/package.py diff --git a/lib/spack/spack/packages/stat/package.py b/var/spack/packages/stat/package.py similarity index 100% rename from lib/spack/spack/packages/stat/package.py rename to var/spack/packages/stat/package.py