summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Green <greenc@fnal.gov>2023-07-10 12:01:20 -0500
committerGitHub <noreply@github.com>2023-07-10 10:01:20 -0700
commit8fdd8fcf63aa74a1c4ba107e48d982225cafe9b2 (patch)
tree1d39d07bcbe08ae41d39bcf7261cb776edae172f
parent30b077e63c85a9a169e275412d912500f4c206ad (diff)
downloadspack-8fdd8fcf63aa74a1c4ba107e48d982225cafe9b2.tar.gz
spack-8fdd8fcf63aa74a1c4ba107e48d982225cafe9b2.tar.bz2
spack-8fdd8fcf63aa74a1c4ba107e48d982225cafe9b2.tar.xz
spack-8fdd8fcf63aa74a1c4ba107e48d982225cafe9b2.zip
Perl package: detect opcode support in externals (#38618)
Spack-installed Perl always has opcode support, but external Perl installations might not. This commit adds a +opcode variant and updates the external detection logic to check for opcode support. The postgresql package is updated to require perl+opcode (in combination with the above, this helps detect when an external Perl instance is sufficient for a Spack build of postgreqsql, or if Spack needs to build its own Perl).
-rw-r--r--var/spack/repos/builtin/packages/perl/package.py5
-rw-r--r--var/spack/repos/builtin/packages/postgresql/package.py2
2 files changed, 6 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py
index 599504b77a..4971033896 100644
--- a/var/spack/repos/builtin/packages/perl/package.py
+++ b/var/spack/repos/builtin/packages/perl/package.py
@@ -179,6 +179,7 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
variant("shared", default=True, description="Build a shared libperl.so library")
variant("threads", default=True, description="Build perl with threads support")
variant("open", default=True, description="Support open.pm")
+ variant("opcode", default=True, description="Support Opcode.pm")
resource(
name="cpanm",
@@ -241,6 +242,10 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package
fail_on_error=False,
)
variants += "+open" if perl.returncode == 0 else "~open"
+ # this is just to detect incomplete installs
+ # normally perl installs Opcode.pm
+ perl("-e", "use Opcode", output=os.devnull, error=os.devnull, fail_on_error=False)
+ variants += "+opcode" if perl.returncode == 0 else "~opcode"
return variants
# On a lustre filesystem, patch may fail when files
diff --git a/var/spack/repos/builtin/packages/postgresql/package.py b/var/spack/repos/builtin/packages/postgresql/package.py
index ed13a9dea8..f1e904c560 100644
--- a/var/spack/repos/builtin/packages/postgresql/package.py
+++ b/var/spack/repos/builtin/packages/postgresql/package.py
@@ -57,7 +57,7 @@ class Postgresql(AutotoolsPackage):
depends_on("libedit", when="lineedit=libedit")
depends_on("openssl")
depends_on("tcl", when="+tcl")
- depends_on("perl", when="+perl")
+ depends_on("perl+opcode", when="+perl")
depends_on("python", when="+python")
depends_on("libxml2", when="+xml")