summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorChuck Atkins <chuck.atkins@kitware.com>2022-06-17 10:29:08 -0400
committerGitHub <noreply@github.com>2022-06-17 10:29:08 -0400
commit85dc20cb555b67410a7eaa324f3dc34e60a8e4db (patch)
tree6e6c063225a14b9f423ac061c19ef234dc818136 /var
parent667c39987cbe95a4bdac9d3ef887d7e8da625569 (diff)
downloadspack-85dc20cb555b67410a7eaa324f3dc34e60a8e4db.tar.gz
spack-85dc20cb555b67410a7eaa324f3dc34e60a8e4db.tar.bz2
spack-85dc20cb555b67410a7eaa324f3dc34e60a8e4db.tar.xz
spack-85dc20cb555b67410a7eaa324f3dc34e60a8e4db.zip
Spec: Add a new virtual-customizable `home` attribute (#30917)
* Spec: Add a new virtual-customizable home attribute * java: Use the new builtin home attribute * python: Use the new builtin home attribute
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin.mock/packages/attributes-foo-app/package.py12
-rw-r--r--var/spack/repos/builtin.mock/packages/attributes-foo/package.py69
-rw-r--r--var/spack/repos/builtin/packages/ibm-java/package.py7
-rw-r--r--var/spack/repos/builtin/packages/icedtea/package.py13
-rw-r--r--var/spack/repos/builtin/packages/jdk/package.py5
-rw-r--r--var/spack/repos/builtin/packages/openjdk/package.py5
-rw-r--r--var/spack/repos/builtin/packages/python/package.py2
7 files changed, 82 insertions, 31 deletions
diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo-app/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo-app/package.py
new file mode 100644
index 0000000000..b4f9ef14ca
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/attributes-foo-app/package.py
@@ -0,0 +1,12 @@
+# Copyright 2013-2022 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.package import *
+
+
+class AttributesFooApp(BundlePackage):
+ version('1.0')
+ depends_on('bar')
+ depends_on('baz')
diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py
new file mode 100644
index 0000000000..bf68c96a53
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py
@@ -0,0 +1,69 @@
+# Copyright 2013-2022 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.package import *
+
+
+class AttributesFoo(BundlePackage):
+ phases = ['install']
+ version('1.0')
+
+ provides('bar')
+ provides('baz')
+
+ def install(self, spec, prefix):
+ if 'platform=windows' in spec:
+ lib_suffix = '.lib'
+ elif 'platform=darwin' in spec:
+ lib_suffix = '.dylib'
+ else:
+ lib_suffix = '.so'
+
+ mkdirp(prefix.include)
+ touch(prefix.include.join('foo.h'))
+ mkdirp(prefix.include.bar)
+ touch(prefix.include.bar.join('bar.h'))
+ mkdirp(prefix.lib64)
+ touch(prefix.lib64.join('libFoo' + lib_suffix))
+ touch(prefix.lib64.join('libFooBar' + lib_suffix))
+ mkdirp(prefix.baz.include.baz)
+ touch(prefix.baz.include.baz.join('baz.h'))
+ mkdirp(prefix.baz.lib)
+ touch(prefix.baz.lib.join('libFooBaz' + lib_suffix))
+
+ # Headers provided by Foo
+ @property
+ def headers(self):
+ return find_headers('foo', root=self.home.include, recursive=False)
+
+ # Libraries provided by Foo
+ @property
+ def libs(self):
+ return find_libraries('libFoo', root=self.home, recursive=True)
+
+ # Header provided by the bar virutal package
+ @property
+ def bar_headers(self):
+ return find_headers('bar/bar', root=self.home.include, recursive=False)
+
+ # Libary provided by the bar virtual package
+ @property
+ def bar_libs(self):
+ return find_libraries('libFooBar', root=self.home, recursive=True)
+
+ # The baz virtual package home
+ @property
+ def baz_home(self):
+ return self.home.baz
+
+ # Header provided by the baz virtual package
+ @property
+ def baz_headers(self):
+ return find_headers('baz/baz', root=self.baz_home.include, recursive=False)
+
+ # Library provided by the baz virtual package
+ @property
+ def baz_libs(self):
+ return find_libraries('libFooBaz', root=self.baz_home, recursive=True)
diff --git a/var/spack/repos/builtin/packages/ibm-java/package.py b/var/spack/repos/builtin/packages/ibm-java/package.py
index c2c65c27a8..2a936fe850 100644
--- a/var/spack/repos/builtin/packages/ibm-java/package.py
+++ b/var/spack/repos/builtin/packages/ibm-java/package.py
@@ -61,10 +61,6 @@ class IbmJava(Package):
return url
@property
- def home(self):
- return self.prefix
-
- @property
def libs(self):
return find_libraries(['libjvm'], root=self.home, recursive=True)
@@ -74,9 +70,6 @@ class IbmJava(Package):
def setup_dependent_build_environment(self, env, dependent_spec):
env.set('JAVA_HOME', self.home)
- def setup_dependent_package(self, module, dependent_spec):
- self.spec.home = self.home
-
def install(self, spec, prefix):
archive = os.path.basename(self.stage.archive_file)
diff --git a/var/spack/repos/builtin/packages/icedtea/package.py b/var/spack/repos/builtin/packages/icedtea/package.py
index 1cfac3640b..445c82f95d 100644
--- a/var/spack/repos/builtin/packages/icedtea/package.py
+++ b/var/spack/repos/builtin/packages/icedtea/package.py
@@ -118,12 +118,6 @@ class Icedtea(AutotoolsPackage):
# can symlink all *.jar files to `prefix.lib.ext`
extendable = True
- @property
- def home(self):
- """For compatibility with the ``jdk`` package, so that other packages
- can say ``spec['java'].home`` regardless of the Java provider."""
- return self.prefix
-
def configure_args(self):
os.environ['POTENTIAL_CXX'] = os.environ['CXX']
os.environ['POTENTIAL_CC'] = os.environ['CC']
@@ -155,7 +149,7 @@ class Icedtea(AutotoolsPackage):
'--with-nashorn-checksum=no', '--disable-maintainer-mode'
'--disable-downloading', '--disable-system-pcsc',
'--disable-system-sctp', '--disable-system-kerberos',
- '--with-jdk-home=' + self.spec['jdk'].prefix
+ '--with-jdk-home=' + self.spec['jdk'].home
]
return args
@@ -191,8 +185,3 @@ class Icedtea(AutotoolsPackage):
class_paths = find(dependent_spec.prefix, '*.jar')
classpath = os.pathsep.join(class_paths)
env.prepend_path('CLASSPATH', classpath)
-
- def setup_dependent_package(self, module, dependent_spec):
- """Allows spec['java'].home to work."""
-
- self.spec.home = self.home
diff --git a/var/spack/repos/builtin/packages/jdk/package.py b/var/spack/repos/builtin/packages/jdk/package.py
index 506df98ec9..a9356f17f6 100644
--- a/var/spack/repos/builtin/packages/jdk/package.py
+++ b/var/spack/repos/builtin/packages/jdk/package.py
@@ -202,8 +202,3 @@ and adding entries for each installation:
class_paths = find(dependent_spec.prefix, '*.jar')
classpath = os.pathsep.join(class_paths)
env.prepend_path('CLASSPATH', classpath)
-
- def setup_dependent_package(self, module, dependent_spec):
- """Allows spec['java'].home to work."""
-
- self.spec.home = self.home
diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py
index 7be8df6835..fa478c2078 100644
--- a/var/spack/repos/builtin/packages/openjdk/package.py
+++ b/var/spack/repos/builtin/packages/openjdk/package.py
@@ -207,8 +207,3 @@ class Openjdk(Package):
class_paths = find(dependent_spec.prefix, '*.jar')
classpath = os.pathsep.join(class_paths)
env.prepend_path('CLASSPATH', classpath)
-
- def setup_dependent_package(self, module, dependent_spec):
- """Allows spec['java'].home to work."""
-
- self.spec.home = self.home
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 44c364b652..d0d18b4de0 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -1300,8 +1300,6 @@ config.update(get_paths())
module.python_platlib = join_path(dependent_spec.prefix, self.platlib)
module.python_purelib = join_path(dependent_spec.prefix, self.purelib)
- self.spec.home = self.home
-
# Make the site packages directory for extensions
if dependent_spec.package.is_extension:
mkdirp(module.python_platlib)