From 08f1701e359073e4704489190e7708764cf8208a Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 18 Dec 2014 13:32:06 -0800 Subject: Allow fake installations (just make the directory). - Use for debugging. --- lib/spack/spack/cmd/install.py | 6 +++++- lib/spack/spack/package.py | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py index 2374d02feb..2c2deb2803 100644 --- a/lib/spack/spack/cmd/install.py +++ b/lib/spack/spack/cmd/install.py @@ -43,6 +43,9 @@ def setup_parser(subparser): subparser.add_argument( '-n', '--no-checksum', action='store_true', dest='no_checksum', help="Do not check packages against checksum") + subparser.add_argument( + '--fake', action='store_true', dest='fake', + help="Fake install. Just remove the prefix and touch a fake file in it.") subparser.add_argument( 'packages', nargs=argparse.REMAINDER, help="specs of packages to install") @@ -59,4 +62,5 @@ def install(parser, args): package = spack.db.get(spec) package.do_install(keep_prefix=args.keep_prefix, keep_stage=args.keep_stage, - ignore_deps=args.ignore_deps) + ignore_deps=args.ignore_deps, + fake=args.fake) diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bb6180c521..9c67b0bb51 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -709,9 +709,10 @@ class Package(object): Package implementations should override install(). """ # whether to keep the prefix on failure. Default is to destroy it. - keep_prefix = kwargs.get('keep_prefix', False) - keep_stage = kwargs.get('keep_stage', False) - ignore_deps = kwargs.get('ignore_deps', False) + keep_prefix = kwargs.get('keep_prefix', False) + keep_stage = kwargs.get('keep_stage', False) + ignore_deps = kwargs.get('ignore_deps', False) + fake_install = kwargs.get('fake', False) if not self.spec.concrete: raise ValueError("Can only install concrete packages.") @@ -725,7 +726,8 @@ class Package(object): if not ignore_deps: self.do_install_dependencies() - self.do_patch() + if not fake_install: + self.do_patch() # Fork a child process to do the build. This allows each # package authors to have full control over their environment, @@ -750,8 +752,14 @@ class Package(object): build_env.set_build_environment_variables(self) build_env.set_module_variables_for_package(self) - # Subclasses implement install() to do the real work. - self.install(self.spec, self.prefix) + if fake_install: + mkdirp(self.prefix.bin) + touch(join_path(self.prefix.bin, 'fake')) + mkdirp(self.prefix.lib) + mkdirp(self.prefix.man1) + else: + # Subclasses implement install() to do the real work. + self.install(self.spec, self.prefix) # Ensure that something was actually installed. if not os.listdir(self.prefix): -- cgit v1.2.3-60-g2f50 From 5cd4ddaf089471bb256174362122e010566b441e Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Thu, 18 Dec 2014 21:38:25 -0800 Subject: Fix for SPACK-49. - name conflict in imp.load_source caused this to fail. - Python modules loaded by imp have unique names now. --- lib/spack/spack/__init__.py | 2 +- lib/spack/spack/hooks/__init__.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index da7088640f..6697e00e40 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -26,7 +26,7 @@ import os import tempfile from llnl.util.filesystem import * -# This lives in $prefix/lib/spac/spack/__file__ +# This lives in $prefix/lib/spack/spack/__file__ prefix = ancestor(__file__, 4) # The spack script itself diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 4f0d574e49..98b7f2323f 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -47,8 +47,11 @@ import spack def all_hook_modules(): modules = [] for name in list_modules(spack.hooks_path): + mod_name = __name__ + '.' + name path = join_path(spack.hooks_path, name) + ".py" - modules.append(imp.load_source('spack.hooks', path)) + mod = imp.load_source(mod_name, path) + modules.append(mod) + return modules -- cgit v1.2.3-60-g2f50