summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/directives.py3
-rw-r--r--lib/spack/spack/test/directives.py9
-rw-r--r--var/spack/repos/builtin.mock/packages/extends-spec/package.py17
3 files changed, 28 insertions, 1 deletions
diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py
index f7400f4da9..c23146125a 100644
--- a/lib/spack/spack/directives.py
+++ b/lib/spack/spack/directives.py
@@ -466,7 +466,8 @@ def extends(spec, type=('build', 'run'), **kwargs):
return
_depends_on(pkg, spec, when=when, type=type)
- pkg.extendees[spec] = (spack.spec.Spec(spec), kwargs)
+ spec_obj = spack.spec.Spec(spec)
+ pkg.extendees[spec_obj.name] = (spec_obj, kwargs)
return _execute_extends
diff --git a/lib/spack/spack/test/directives.py b/lib/spack/spack/test/directives.py
index 31038ebb47..ad7c98bdb9 100644
--- a/lib/spack/spack/test/directives.py
+++ b/lib/spack/spack/test/directives.py
@@ -51,3 +51,12 @@ def test_constraints_from_context_are_merged(mock_packages):
assert pkg_cls.dependencies
assert spack.spec.Spec('@0.14:15 ^b@3.8:4.0') in pkg_cls.dependencies['c']
+
+
+@pytest.mark.regression('27754')
+def test_extends_spec(config, mock_packages):
+ extender = spack.spec.Spec('extends-spec').concretized()
+ extendee = spack.spec.Spec('extendee').concretized()
+
+ assert extender.dependencies
+ assert extender.package.extends(extendee)
diff --git a/var/spack/repos/builtin.mock/packages/extends-spec/package.py b/var/spack/repos/builtin.mock/packages/extends-spec/package.py
new file mode 100644
index 0000000000..56e887b772
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/extends-spec/package.py
@@ -0,0 +1,17 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack import *
+
+
+class ExtendsSpec(Package):
+ """Package that tests if the extends directive supports a spec."""
+
+ homepage = "http://www.example.com"
+ url = "http://www.example.com/example-1.0.tar.gz"
+
+ version('1.0', '0123456789abcdef0123456789abcdef')
+
+ extends('extendee@1:')