diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index 26f43171b81..a3bdee03361 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -100,11 +100,6 @@ def __init__(cls, name, bases, attr_dict): # 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 d20a6d8e883..bf406ed742c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -229,6 +229,19 @@ def fullname(self): """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 @@ def __init__(self, spec): # 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 @@ -585,6 +592,11 @@ def fullname(self): """Name of this package, including namespace: namespace.name.""" 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