def setUp(self): super(MockDatabase, self).setUp() # # TODO: make the mockup below easier. # # Make a fake install directory self.install_path = tempfile.mkdtemp() self.spack_install_path = spack.install_path spack.install_path = self.install_path self.install_layout = YamlDirectoryLayout(self.install_path) self.spack_install_layout = spack.install_layout spack.install_layout = self.install_layout # Make fake database and fake install directory. self.installed_db = Database(self.install_path) self.spack_installed_db = spack.installed_db spack.installed_db = self.installed_db # make a mock database with some packages installed note that # the ref count for dyninst here will be 3, as it's recycled # across each install. # # Here is what the mock DB looks like: # # o mpileaks o mpileaks' o mpileaks'' # |\ |\ |\ # | o callpath | o callpath' | o callpath'' # |/| |/| |/| # o | mpich o | mpich2 o | zmpi # | | o | fake # | | | # | |______________/ # | .____________/ # |/ # o dyninst # |\ # | o libdwarf # |/ # o libelf # # Transaction used to avoid repeated writes. with spack.installed_db.write_transaction(): self._mock_install('mpileaks ^mpich') self._mock_install('mpileaks ^mpich2') self._mock_install('mpileaks ^zmpi')
def install_mockery(tmpdir, config, builtin_mock): """Hooks a fake install directory and a fake db into Spack.""" layout = spack.store.layout db = spack.store.db # Use a fake install directory to avoid conflicts bt/w # installed pkgs and mock packages. spack.store.layout = YamlDirectoryLayout(str(tmpdir)) spack.store.db = Database(str(tmpdir)) # We use a fake package, so skip the checksum. spack.do_checksum = False yield # Turn checksumming back on spack.do_checksum = True # Restore Spack's layout. spack.store.layout = layout spack.store.db = db
def setUp(self): super(InstallTest, self).setUp() # create a simple installable package directory and tarball self.repo = MockArchive() # We use a fake package, so skip the checksum. spack.do_checksum = False # Use a fake install directory to avoid conflicts bt/w # installed pkgs and mock packages. self.tmpdir = tempfile.mkdtemp() self.orig_layout = spack.store.layout self.orig_db = spack.store.db spack.store.layout = YamlDirectoryLayout(self.tmpdir) spack.store.db = Database(self.tmpdir)
from spack.directory_layout import YamlExtensionsLayout __author__ = "Benedikt Hegner (CERN)" __all__ = ['db', 'extensions', 'layout', 'root'] # # Read in the config # config = spack.config.get_config("config") # # Set up the install path # root = canonicalize_path( config.get('install_tree', os.path.join(spack.opt_path, 'spack'))) # # Set up the installed packages database # db = Database(root) # # This controls how spack lays out install prefixes and # stage directories. # layout = YamlDirectoryLayout(root, hash_len=config.get('install_hash_length'), path_scheme=config.get('install_path_scheme')) extensions = YamlExtensionsLayout(root, layout)
# # Set up the default packages database. # import spack.repository try: repo = spack.repository.RepoPath() sys.meta_path.append(repo) except spack.error.SpackError, e: tty.die('while initializing Spack RepoPath:', e.message) # # Set up the installed packages database # from spack.database import Database installed_db = Database(install_path) # # Paths to built-in Spack repositories. # packages_path = join_path(repos_path, "builtin") mock_packages_path = join_path(repos_path, "builtin.mock") # # This controls how spack lays out install prefixes and # stage directories. # from spack.directory_layout import YamlDirectoryLayout install_layout = YamlDirectoryLayout(install_path) #