summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>2021-12-03 14:42:45 -0800
committerGitHub <noreply@github.com>2021-12-03 23:42:45 +0100
commit6f9dc1c926d3fd0b6e394c7f3ec7a3594d97e93d (patch)
treec2ccfdc861d860bca0be4070026641d2cd3f8ab1
parent324e046f06dec36c78db68f241e04f8af84ccfca (diff)
downloadspack-6f9dc1c926d3fd0b6e394c7f3ec7a3594d97e93d.tar.gz
spack-6f9dc1c926d3fd0b6e394c7f3ec7a3594d97e93d.tar.bz2
spack-6f9dc1c926d3fd0b6e394c7f3ec7a3594d97e93d.tar.xz
spack-6f9dc1c926d3fd0b6e394c7f3ec7a3594d97e93d.zip
berkeley-db: Add minimal external detection (#27752)
-rw-r--r--var/spack/repos/builtin/packages/berkeley-db/package.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/berkeley-db/package.py b/var/spack/repos/builtin/packages/berkeley-db/package.py
index 0e5fbdbbf1..a31e9f6dfd 100644
--- a/var/spack/repos/builtin/packages/berkeley-db/package.py
+++ b/var/spack/repos/builtin/packages/berkeley-db/package.py
@@ -2,6 +2,7 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+import re
class BerkeleyDb(AutotoolsPackage):
@@ -11,6 +12,8 @@ class BerkeleyDb(AutotoolsPackage):
# URL must remain http:// so Spack can bootstrap curl
url = "https://download.oracle.com/berkeley-db/db-18.1.40.tar.gz"
+ executables = [r'^db_load$'] # One should be sufficient
+
version("18.1.40", sha256="0cecb2ef0c67b166de93732769abdeba0555086d51de1090df325e18ee8da9c8")
version('18.1.32', sha256='fa1fe7de9ba91ad472c25d026f931802597c29f28ae951960685cde487c8d654', deprecated=True)
version('6.2.32', sha256='a9c5e2b004a5777aa03510cfe5cd766a4a3b777713406b02809c17c8e0e7a8fb')
@@ -32,6 +35,18 @@ class BerkeleyDb(AutotoolsPackage):
conflicts('+stl', when='~cxx', msg='+stl implies +cxx')
+ @classmethod
+ def determine_version(cls, exe):
+ """Return the version of the provided executable or ``None`` if
+ the version cannot be determined.
+
+ Arguments:
+ exe (str): absolute path to the executable being examined
+ """
+ output = Executable(exe)('-V', output=str, error=str)
+ match = re.search(r'Berkeley DB\s+([\d\.]+)', output)
+ return match.group(1) if match else None
+
def patch(self):
# some of the docs are missing in 18.1.40
if self.spec.satisfies("@18.1.40"):