From 4fc71e05c40e00f2939db6f5ffc0cc6d7af32a55 Mon Sep 17 00:00:00 2001
From: Dylan Baker <dylan@pnwbakers.com>
Date: Tue, 14 Jan 2020 11:21:52 -0800
Subject: dependencies: Use a factory for curses

---
 mesonbuild/dependencies/misc.py | 34 +++++++++++-----------------------
 1 file changed, 11 insertions(+), 23 deletions(-)

(limited to 'mesonbuild/dependencies/misc.py')

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})
-- 
cgit v1.1