diff options
author | Tobias Ribizel <ribizel@kit.edu> | 2023-06-01 21:38:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-01 14:38:17 -0500 |
commit | 055263fa3c51cbc263e5e743417f94b21950c4c0 (patch) | |
tree | c59a1812d75aaea294e6360b63f952dc6f5b9533 /var | |
parent | f34f207bdc0e22cb5f0a5dff56250badef1f7273 (diff) | |
download | spack-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`
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/opencv/package.py | 29 |
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: |