diff options
-rw-r--r-- | lib/spack/spack/directives.py | 5 | ||||
-rw-r--r-- | lib/spack/spack/package.py | 24 |
2 files changed, 18 insertions, 11 deletions
diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 26f43171b8..a3bdee0336 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -100,11 +100,6 @@ class DirectiveMeta(type): # that the directives are called on the class to set it up if 'spack.pkg' in cls.__module__: - # Package name as taken - # from llnl.util.lang.get_calling_module_name - pkg_name = cls.__module__.split('.')[-1] - setattr(cls, 'name', pkg_name) - # Ensure the presence of the dictionaries associated # with the directives for d in DirectiveMeta._directive_names: diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index d20a6d8e88..bf406ed742 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -229,6 +229,19 @@ class PackageMeta( """Name of this package, including the namespace""" return '%s.%s' % (self.namespace, self.name) + @property + def name(self): + """The name of this package. + + The name of a package is the name of its Python module, without + the containing module names. + """ + if not hasattr(self, '_name'): + self._name = self.module.__name__ + if '.' in self._name: + self._name = self._name[self._name.rindex('.') + 1:] + return self._name + def run_before(*phases): """Registers a method of a package to be run before a given phase""" @@ -472,12 +485,6 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)): # this determines how the package should be built. self.spec = spec - # Name of package is the name of its module, without the - # containing module names. - self.name = self.module.__name__ - if '.' in self.name: - self.name = self.name[self.name.rindex('.') + 1:] - # Allow custom staging paths for packages self.path = None @@ -586,6 +593,11 @@ class PackageBase(with_metaclass(PackageMeta, PackageViewMixin, object)): return type(self).fullname @property + def name(self): + """Name of this package (the module without parent modules).""" + return type(self).name + + @property def global_license_dir(self): """Returns the directory where global license files for all packages are stored.""" |