summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Ribizel <ribizel@kit.edu>2023-06-01 21:38:17 +0200
committerGitHub <noreply@github.com>2023-06-01 14:38:17 -0500
commit055263fa3c51cbc263e5e743417f94b21950c4c0 (patch)
treec59a1812d75aaea294e6360b63f952dc6f5b9533
parentf34f207bdc0e22cb5f0a5dff56250badef1f7273 (diff)
downloadspack-055263fa3c51cbc263e5e743417f94b21950c4c0.tar.gz
spack-055263fa3c51cbc263e5e743417f94b21950c4c0.tar.bz2
spack-055263fa3c51cbc263e5e743417f94b21950c4c0.tar.xz
spack-055263fa3c51cbc263e5e743417f94b21950c4c0.zip
Fix OpenCV detection on Ubuntu (#35336)
* fix OpenCV detection on Ubuntu * Update package.py * Simplify version detection * remove superfluous `return`
-rw-r--r--var/spack/repos/builtin/packages/opencv/package.py29
1 files changed, 17 insertions, 12 deletions
diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py
index 2fa82da947..b07eed756b 100644
--- a/var/spack/repos/builtin/packages/opencv/package.py
+++ b/var/spack/repos/builtin/packages/opencv/package.py
@@ -822,35 +822,40 @@ class Opencv(CMakePackage, CudaPackage):
@classmethod
def determine_version(cls, lib):
- ver = None
for ext in library_extensions:
- pattern = None
if ext == "dylib":
# Darwin switches the order of the version compared to Linux
- pattern = re.compile(r"lib(\S*?)_(\S*)\.(\d+\.\d+\.\d+)\.%s" % ext)
+ pattern = re.compile(r"libopencv_(\S*?)\.(\d+\.\d+\.\d+)\.%s" % ext)
else:
- pattern = re.compile(r"lib(\S*?)_(\S*)\.%s\.(\d+\.\d+\.\d+)" % ext)
+ pattern = re.compile(r"libopencv_(\S*?)\.%s\.(\d+\.\d+\.\d+)" % ext)
match = pattern.search(lib)
if match:
- ver = match.group(3)
- return ver
+ return match.group(2)
@classmethod
def determine_variants(cls, libs, version_str):
variants = []
- remaining_modules = set(Opencv.modules)
+ remaining_modules = set(cls.modules + cls.contrib_modules)
+ contrib_module_set = set(cls.contrib_modules)
+ has_contrib = False
for lib in libs:
for ext in library_extensions:
pattern = None
if ext == "dylib":
# Darwin switches the order of the version compared to Linux
- pattern = re.compile(r"lib(\S*?)_(\S*)\.(\d+\.\d+\.\d+)\.%s" % ext)
+ pattern = re.compile(r"libopencv_(\S*)\.(\d+\.\d+\.\d+)\.%s" % ext)
else:
- pattern = re.compile(r"lib(\S*?)_(\S*)\.%s\.(\d+\.\d+\.\d+)" % ext)
+ pattern = re.compile(r"libopencv_(\S*)\.%s\.(\d+\.\d+\.\d+)" % ext)
match = pattern.search(lib)
- if match and not match.group(2) == "core":
- variants.append("+" + match.group(2))
- remaining_modules.remove(match.group(2))
+ if match:
+ name = match.group(1)
+ if name in contrib_module_set:
+ has_contrib = True
+ if name in remaining_modules:
+ variants.append("+" + name)
+ remaining_modules.remove(name)
+ if has_contrib:
+ variants.append("+contrib")
# If libraries are not found, mark those variants as disabled
for mod in remaining_modules: