diff options
-rw-r--r-- | mesonbuild/dependencies/__init__.py | 8 | ||||
-rw-r--r-- | mesonbuild/dependencies/misc.py | 34 |
2 files changed, 17 insertions, 25 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py index ac12edb..c8143b9 100644 --- a/mesonbuild/dependencies/__init__.py +++ b/mesonbuild/dependencies/__init__.py @@ -24,7 +24,11 @@ from .dev import ValgrindDependency, gmock_factory, gtest_factory, llvm_factory from .coarrays import coarray_factory from .mpi import MPIDependency from .scalapack import ScalapackDependency -from .misc import (BlocksDependency, CursesDependency, OpenMPDependency, cups_factory, gpgme_factory, libgcrypt_factory, libwmf_factory, netcdf_factory, pcap_factory, python3_factory, shaderc_factory, threads_factory) +from .misc import ( + BlocksDependency, OpenMPDependency, cups_factory, curses_factory, gpgme_factory, + libgcrypt_factory, libwmf_factory, netcdf_factory, pcap_factory, python3_factory, + shaderc_factory, threads_factory, +) from .platform import AppleFrameworks from .ui import GnuStepDependency, Qt4Dependency, Qt5Dependency, WxDependency, gl_factory, sdl2_factory, vulkan_factory @@ -47,7 +51,7 @@ packages.update({ # From misc: 'blocks': BlocksDependency, - 'curses': CursesDependency, + 'curses': curses_factory, 'netcdf': netcdf_factory, 'openmp': OpenMPDependency, 'python3': python3_factory, diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index 7eba808..07948c9 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -23,12 +23,11 @@ import typing as T from .. import mlog from .. import mesonlib from ..environment import detect_cpu_family -from ..mesonlib import listify from .base import ( DependencyException, DependencyMethods, ExternalDependency, PkgConfigDependency, CMakeDependency, ConfigToolDependency, - process_method_kw, factory_methods, DependencyFactory, + factory_methods, DependencyFactory, ) if T.TYPE_CHECKING: @@ -393,28 +392,17 @@ class ShadercDependency(ExternalDependency): return [DependencyMethods.SYSTEM, DependencyMethods.PKGCONFIG] -class CursesDependency(ExternalDependency): - def __init__(self, environment, kwargs): - super().__init__('curses', environment, None, kwargs) - self.name = 'curses' - self.is_found = False - methods = listify(self.methods) - - if set([DependencyMethods.AUTO, DependencyMethods.PKGCONFIG]).intersection(methods): - pkgconfig_files = ['ncurses', 'ncursesw'] - for pkg in pkgconfig_files: - pkgdep = PkgConfigDependency(pkg, environment, kwargs) - if pkgdep.found(): - self.compile_args = pkgdep.get_compile_args() - self.link_args = pkgdep.get_link_args() - self.version = pkgdep.get_version() - self.is_found = True - self.pcdep = pkgdep - return +@factory_methods({DependencyMethods.PKGCONFIG}) +def curses_factory(env: 'Environment', for_machine: 'MachineChoice', + kwargs: T.Dict[str, T.Any], methods: T.List[DependencyMethods]) -> T.List['DependencyType']: + candidates = [] # type: T.List['DependencyType'] - @staticmethod - def get_methods(): - return [DependencyMethods.AUTO, DependencyMethods.PKGCONFIG] + if DependencyMethods.PKGCONFIG in methods: + pkgconfig_files = ['ncurses', 'ncursesw'] + for pkg in pkgconfig_files: + candidates.append(functools.partial(PkgConfigDependency, pkg, env, kwargs)) + + return candidates @factory_methods({DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM}) |