diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2020-01-08 13:23:52 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2020-01-29 09:11:24 -0800 |
| commit | fd892ad7cec12a34287f65a57c44703a6f4e4119 (patch) | |
| tree | aba23134fa8670f3db8296c0db695833f4c1ddb4 /mesonbuild/dependencies | |
| parent | f85d6cee6abd5d3f763240bcd0ab4e18daf60c95 (diff) | |
| download | meson-fd892ad7cec12a34287f65a57c44703a6f4e4119.tar.gz | |
dependencies: Make Dependency initializer signatures match
Currently PkgConfig takes language as a keyword parameter in position 3,
while the others take it as positional in position 2. Because most
dependencies don't actually set a language (they use C style linking),
using a positional argument makes more sense. ExtraFrameworkDependencies
is even more different, and duplicates some arguments from the base
ExternalDependency class.
For later changes I'm planning to make having all of the dependencies
use the same signature is really, really helpful.
Diffstat (limited to 'mesonbuild/dependencies')
| -rw-r--r-- | mesonbuild/dependencies/base.py | 32 | ||||
| -rw-r--r-- | mesonbuild/dependencies/boost.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/coarrays.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/cuda.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dev.py | 10 | ||||
| -rw-r--r-- | mesonbuild/dependencies/hdf5.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/misc.py | 30 | ||||
| -rw-r--r-- | mesonbuild/dependencies/mpi.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/platform.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/scalapack.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/ui.py | 25 |
11 files changed, 54 insertions, 57 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 7e563d6f8..db8a0a65f 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -261,7 +261,7 @@ class HasNativeKwarg: return MachineChoice.BUILD if kwargs.get('native', False) else MachineChoice.HOST class ExternalDependency(Dependency, HasNativeKwarg): - def __init__(self, type_name, environment, language, kwargs): + def __init__(self, type_name, environment, kwargs, language: T.Optional[str] = None): Dependency.__init__(self, type_name, kwargs) self.env = environment self.name = type_name # default @@ -383,8 +383,8 @@ class ConfigToolDependency(ExternalDependency): tool_name = None __strip_version = re.compile(r'^[0-9.]*') - def __init__(self, name, environment, language, kwargs): - super().__init__('config-tool', environment, language, kwargs) + def __init__(self, name, environment, kwargs, language: T.Optional[str] = None): + super().__init__('config-tool', environment, kwargs, language=language) self.name = name self.tools = listify(kwargs.get('tools', self.tools)) @@ -426,7 +426,7 @@ class ConfigToolDependency(ExternalDependency): sub = type('{}Dependency'.format(name.capitalize()), (cls, ), {'tools': tools, 'tool_name': tool_name, '__reduce__': reduce, 'finish_init': staticmethod(finish_init)}) - return sub(name, environment, language, kwargs) + return sub(name, environment, kwargs, language=language) @classmethod def _unpickle(cls): @@ -563,8 +563,8 @@ class PkgConfigDependency(ExternalDependency): # We cache all pkg-config subprocess invocations to avoid redundant calls pkgbin_cache = {} - def __init__(self, name, environment, kwargs, language=None): - super().__init__('pkgconfig', environment, language, kwargs) + def __init__(self, name, environment, kwargs, language: T.Optional[str] = None): + super().__init__('pkgconfig', environment, kwargs, language=language) self.name = name self.is_libtool = False # Store a copy of the pkg-config path on the object itself so it is @@ -1043,7 +1043,7 @@ class CMakeDependency(ExternalDependency): # one module return module - def __init__(self, name: str, environment: Environment, kwargs, language: str = None): + def __init__(self, name: str, environment: Environment, kwargs, language: T.Optional[str] = None): # Gather a list of all languages to support self.language_list = [] # type: T.List[str] if language is None: @@ -1065,7 +1065,7 @@ class CMakeDependency(ExternalDependency): # Ensure that the list is unique self.language_list = list(set(self.language_list)) - super().__init__('cmake', environment, language, kwargs) + super().__init__('cmake', environment, kwargs, language=language) self.name = name self.is_libtool = False # Store a copy of the CMake path on the object itself so it is @@ -1566,7 +1566,7 @@ class DubDependency(ExternalDependency): class_dubbin = None def __init__(self, name, environment, kwargs): - super().__init__('dub', environment, 'd', kwargs) + super().__init__('dub', environment, kwargs, language='d') self.name = name self.compiler = super().get_compiler() self.module_path = None @@ -2028,7 +2028,7 @@ class EmptyExternalProgram(ExternalProgram): # lgtm [py/missing-call-to-init] class ExternalLibrary(ExternalDependency): def __init__(self, name, link_args, environment, language, silent=False): - super().__init__('library', environment, language, {}) + super().__init__('library', environment, {}, language=language) self.name = name self.language = language self.is_found = False @@ -2070,10 +2070,10 @@ class ExternalLibrary(ExternalDependency): class ExtraFrameworkDependency(ExternalDependency): system_framework_paths = None - def __init__(self, name, required, paths, env, lang, kwargs): - super().__init__('extraframeworks', env, lang, kwargs) + def __init__(self, name, env, kwargs, language: T.Optional[str] = None): + paths = kwargs.get('paths', []) + super().__init__('extraframeworks', env, kwargs, language=language) self.name = name - self.required = required # Full path to framework directory self.framework_path = None if not self.clib_compiler: @@ -2321,8 +2321,7 @@ def _build_external_dependency_list(name, env: Environment, kwargs: T.Dict[str, if 'extraframework' == kwargs.get('method', ''): # On OSX, also try framework dependency detector if mesonlib.is_osx(): - candidates.append(functools.partial(ExtraFrameworkDependency, name, - False, None, env, None, kwargs)) + candidates.append(functools.partial(ExtraFrameworkDependency, name, env, kwargs)) return candidates # Otherwise, just use the pkgconfig and cmake dependency detector @@ -2331,8 +2330,7 @@ def _build_external_dependency_list(name, env: Environment, kwargs: T.Dict[str, # On OSX, also try framework dependency detector if mesonlib.is_osx(): - candidates.append(functools.partial(ExtraFrameworkDependency, name, - False, None, env, None, kwargs)) + candidates.append(functools.partial(ExtraFrameworkDependency, name, env, kwargs)) # Only use CMake as a last resort, since it might not work 100% (see #6113) candidates.append(functools.partial(CMakeDependency, name, env, kwargs)) diff --git a/mesonbuild/dependencies/boost.py b/mesonbuild/dependencies/boost.py index 340a5a927..0f7216f62 100644 --- a/mesonbuild/dependencies/boost.py +++ b/mesonbuild/dependencies/boost.py @@ -97,7 +97,7 @@ from .misc import ThreadDependency class BoostDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('boost', environment, 'cpp', kwargs) + super().__init__('boost', environment, kwargs, language='cpp') self.need_static_link = ['boost_exception', 'boost_test_exec_monitor'] self.is_debug = environment.coredata.get_builtin_option('buildtype').startswith('debug') threading = kwargs.get("threading", "multi") diff --git a/mesonbuild/dependencies/coarrays.py b/mesonbuild/dependencies/coarrays.py index b0b6cf4b4..7f0b30ed3 100644 --- a/mesonbuild/dependencies/coarrays.py +++ b/mesonbuild/dependencies/coarrays.py @@ -26,7 +26,7 @@ class CoarrayDependency(ExternalDependency): low-level MPI calls. """ def __init__(self, environment, kwargs: dict): - super().__init__('coarray', environment, 'fortran', kwargs) + super().__init__('coarray', environment, kwargs, language='fortran') kwargs['required'] = False kwargs['silent'] = True self.is_found = False diff --git a/mesonbuild/dependencies/cuda.py b/mesonbuild/dependencies/cuda.py index 7048e8138..9c189be7b 100644 --- a/mesonbuild/dependencies/cuda.py +++ b/mesonbuild/dependencies/cuda.py @@ -33,7 +33,7 @@ class CudaDependency(ExternalDependency): if language not in self.supported_languages: raise DependencyException('Language \'{}\' is not supported by the CUDA Toolkit. Supported languages are {}.'.format(language, self.supported_languages)) - super().__init__('cuda', environment, language, kwargs) + super().__init__('cuda', environment, kwargs, language=language) self.requested_modules = self.get_requested(kwargs) if 'cudart' not in self.requested_modules: self.requested_modules = ['cudart'] + self.requested_modules diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index 0488b2b47..da19e907d 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -46,7 +46,7 @@ def get_shared_library_suffix(environment, for_machine: MachineChoice): class GTestDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('gtest', environment, 'cpp', kwargs) + super().__init__('gtest', environment, kwargs, language='cpp') self.main = kwargs.get('main', False) self.src_dirs = ['/usr/src/gtest/src', '/usr/src/googletest/googletest/src'] self.detect() @@ -119,7 +119,7 @@ class GTestDependency(ExternalDependency): class GMockDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('gmock', environment, 'cpp', kwargs) + super().__init__('gmock', environment, kwargs, language='cpp') self.main = kwargs.get('main', False) self._add_sub_dependency(ThreadDependency, environment, kwargs) @@ -218,7 +218,7 @@ class LLVMDependencyConfigTool(ConfigToolDependency): # It's necessary for LLVM <= 3.8 to use the C++ linker. For 3.9 and 4.0 # the C linker works fine if only using the C API. - super().__init__('LLVM', environment, 'cpp', kwargs) + super().__init__('LLVM', environment, kwargs, language='cpp') self.provided_modules = [] self.required_modules = set() self.module_details = [] @@ -394,7 +394,7 @@ class LLVMDependencyCMake(CMakeDependency): def __init__(self, env, kwargs): self.llvm_modules = stringlistify(extract_as_list(kwargs, 'modules')) self.llvm_opt_modules = stringlistify(extract_as_list(kwargs, 'optional_modules')) - super().__init__(name='LLVM', environment=env, language='cpp', kwargs=kwargs) + super().__init__('LLVM', env, kwargs, language='cpp') if self.traceparser is None: return @@ -435,7 +435,7 @@ class LLVMDependencyCMake(CMakeDependency): class LLVMDependency(ExternalDependency): def __init__(self, env, kwargs): - super().__init__('LLVM', env, 'cpp', kwargs) + super().__init__('LLVM', env, kwargs, language='cpp') @classmethod def _factory(cls, env, kwargs): diff --git a/mesonbuild/dependencies/hdf5.py b/mesonbuild/dependencies/hdf5.py index 3bb1fda63..fadd10980 100644 --- a/mesonbuild/dependencies/hdf5.py +++ b/mesonbuild/dependencies/hdf5.py @@ -27,7 +27,7 @@ class HDF5Dependency(ExternalDependency): def __init__(self, environment, kwargs): language = kwargs.get('language', 'c') - super().__init__('hdf5', environment, language, kwargs) + super().__init__('hdf5', environment, kwargs, language=language) kwargs['required'] = False kwargs['silent'] = True self.is_found = False diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index fd480c1dc..d4a505d48 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -35,7 +35,7 @@ class NetCDFDependency(ExternalDependency): def __init__(self, environment, kwargs): language = kwargs.get('language', 'c') - super().__init__('netcdf', environment, language, kwargs) + super().__init__('netcdf', environment, kwargs, language=language) kwargs['required'] = False kwargs['silent'] = True self.is_found = False @@ -94,7 +94,7 @@ class OpenMPDependency(ExternalDependency): def __init__(self, environment, kwargs): language = kwargs.get('language') - super().__init__('openmp', environment, language, kwargs) + super().__init__('openmp', environment, kwargs, language=language) self.is_found = False if self.clib_compiler.get_id() == 'pgi': # through at least PGI 19.4, there is no macro defined for OpenMP, but OpenMP 3.1 is supported. @@ -125,7 +125,7 @@ class OpenMPDependency(ExternalDependency): class ThreadDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('threads', environment, None, kwargs) + super().__init__('threads', environment, kwargs) self.name = 'threads' self.is_found = False methods = listify(self.methods) @@ -159,7 +159,7 @@ class ThreadDependency(ExternalDependency): class BlocksDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('blocks', environment, None, kwargs) + super().__init__('blocks', environment, kwargs) self.name = 'blocks' self.is_found = False @@ -192,7 +192,7 @@ class BlocksDependency(ExternalDependency): class Python3Dependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('python3', environment, None, kwargs) + super().__init__('python3', environment, kwargs) if not environment.machines.matches_build_machine(self.for_machine): return @@ -219,9 +219,10 @@ class Python3Dependency(ExternalDependency): # number in its name. # There is a python in /System/Library/Frameworks, but that's # python 2, Python 3 will always be in /Library + _kargs = kwargs.copy() + _kargs[paths] = ['/Library/Frameworks'] candidates.append(functools.partial( - ExtraFrameworkDependency, 'Python', False, ['/Library/Frameworks'], - environment, kwargs.get('language', None), kwargs)) + ExtraFrameworkDependency, 'Python', environment, _kargs)) return candidates @@ -325,7 +326,7 @@ class Python3Dependency(ExternalDependency): class PcapDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('pcap', environment, None, kwargs) + super().__init__('pcap', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -370,7 +371,7 @@ class PcapDependency(ExternalDependency): class CupsDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('cups', environment, None, kwargs) + super().__init__('cups', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -389,8 +390,7 @@ class CupsDependency(ExternalDependency): if DependencyMethods.EXTRAFRAMEWORK in methods: if mesonlib.is_osx(): candidates.append(functools.partial( - ExtraFrameworkDependency, 'cups', False, None, environment, - kwargs.get('language', None), kwargs)) + ExtraFrameworkDependency, 'cups', environment, kwargs)) if DependencyMethods.CMAKE in methods: candidates.append(functools.partial(CMakeDependency, 'Cups', environment, kwargs)) @@ -412,7 +412,7 @@ class CupsDependency(ExternalDependency): class LibWmfDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('libwmf', environment, None, kwargs) + super().__init__('libwmf', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -440,7 +440,7 @@ class LibWmfDependency(ExternalDependency): class LibGCryptDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('libgcrypt', environment, None, kwargs) + super().__init__('libgcrypt', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -471,7 +471,7 @@ class LibGCryptDependency(ExternalDependency): class GpgmeDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('gpgme', environment, None, kwargs) + super().__init__('gpgme', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -503,7 +503,7 @@ class GpgmeDependency(ExternalDependency): class ShadercDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('shaderc', environment, None, kwargs) + super().__init__('shaderc', environment, kwargs) static_lib = 'shaderc_combined' shared_lib = 'shaderc_shared' diff --git a/mesonbuild/dependencies/mpi.py b/mesonbuild/dependencies/mpi.py index 075471223..59ba0cd41 100644 --- a/mesonbuild/dependencies/mpi.py +++ b/mesonbuild/dependencies/mpi.py @@ -29,7 +29,7 @@ class MPIDependency(ExternalDependency): def __init__(self, environment, kwargs: dict): language = kwargs.get('language', 'c') - super().__init__('mpi', environment, language, kwargs) + super().__init__('mpi', environment, kwargs, language=language) kwargs['required'] = False kwargs['silent'] = True self.is_found = False diff --git a/mesonbuild/dependencies/platform.py b/mesonbuild/dependencies/platform.py index e913ed488..6a32e36a1 100644 --- a/mesonbuild/dependencies/platform.py +++ b/mesonbuild/dependencies/platform.py @@ -20,7 +20,7 @@ from ..mesonlib import MesonException class AppleFrameworks(ExternalDependency): def __init__(self, env, kwargs): - super().__init__('appleframeworks', env, None, kwargs) + super().__init__('appleframeworks', env, kwargs) modules = kwargs.get('modules', []) if isinstance(modules, str): modules = [modules] diff --git a/mesonbuild/dependencies/scalapack.py b/mesonbuild/dependencies/scalapack.py index 8a5840211..83f175c20 100644 --- a/mesonbuild/dependencies/scalapack.py +++ b/mesonbuild/dependencies/scalapack.py @@ -21,7 +21,7 @@ from .base import CMakeDependency, DependencyMethods, ExternalDependency, PkgCon class ScalapackDependency(ExternalDependency): def __init__(self, environment, kwargs: dict): - super().__init__('scalapack', environment, None, kwargs) + super().__init__('scalapack', environment, kwargs) kwargs['required'] = False kwargs['silent'] = True self.is_found = False diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py index c95395178..38c51b88d 100644 --- a/mesonbuild/dependencies/ui.py +++ b/mesonbuild/dependencies/ui.py @@ -18,6 +18,7 @@ import functools import os import re import subprocess +import typing as T from collections import OrderedDict from .. import mlog @@ -35,7 +36,7 @@ from .base import ConfigToolDependency, process_method_kw class GLDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('gl', environment, None, kwargs) + super().__init__('gl', environment, kwargs) if self.env.machines[self.for_machine].is_darwin(): self.is_found = True @@ -79,7 +80,7 @@ class GnuStepDependency(ConfigToolDependency): tool_name = 'gnustep-config' def __init__(self, environment, kwargs): - super().__init__('gnustep', environment, 'objc', kwargs) + super().__init__('gnustep', environment, kwargs, language='objc') if not self.is_found: return self.modules = kwargs.get('modules', []) @@ -176,8 +177,8 @@ def _qt_get_private_includes(mod_inc_dir, module, mod_version): os.path.join(private_dir, 'Qt' + module)) class QtExtraFrameworkDependency(ExtraFrameworkDependency): - def __init__(self, name, required, paths, env, lang, kwargs): - super().__init__(name, required, paths, env, lang, kwargs) + def __init__(self, name, env, kwargs, language: T.Optional[str] = None): + super().__init__(name, env, kwargs, language=language) self.mod_name = name[2:] def get_compile_args(self, with_private_headers=False, qt_version="0"): @@ -191,7 +192,7 @@ class QtExtraFrameworkDependency(ExtraFrameworkDependency): class QtBaseDependency(ExternalDependency): def __init__(self, name, env, kwargs): - super().__init__(name, env, 'cpp', kwargs) + super().__init__(name, env, kwargs, language='cpp') self.qtname = name.capitalize() self.qtver = name[-1] if self.qtver == "4": @@ -443,12 +444,12 @@ class QtBaseDependency(ExternalDependency): # ExtraFrameworkDependency doesn't support any methods fw_kwargs = kwargs.copy() fw_kwargs.pop('method', None) + fw_kwargs['paths'] = [libdir] for m in modules: fname = 'Qt' + m mlog.debug('Looking for qt framework ' + fname) - fwdep = QtExtraFrameworkDependency(fname, False, [libdir], self.env, - self.language, fw_kwargs) + fwdep = QtExtraFrameworkDependency(fname, self.env, fw_kwargs, language=self.language) self.compile_args.append('-F' + libdir) if fwdep.found(): self.compile_args += fwdep.get_compile_args(with_private_headers=self.private_headers, @@ -528,7 +529,7 @@ class Qt5Dependency(QtBaseDependency): # sdl2-config, pkg-config and OSX framework class SDL2Dependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('sdl2', environment, None, kwargs) + super().__init__('sdl2', environment, kwargs) @classmethod def _factory(cls, environment, kwargs): @@ -546,9 +547,7 @@ class SDL2Dependency(ExternalDependency): if DependencyMethods.EXTRAFRAMEWORK in methods: if mesonlib.is_osx(): - candidates.append(functools.partial(ExtraFrameworkDependency, - 'sdl2', False, None, environment, - kwargs.get('language', None), kwargs)) + candidates.append(functools.partial(ExtraFrameworkDependency, 'sdl2', environment, kwargs)) # fwdep.version = '2' # FIXME return candidates @@ -571,7 +570,7 @@ class WxDependency(ConfigToolDependency): tool_name = 'wx-config' def __init__(self, environment, kwargs): - super().__init__('WxWidgets', environment, None, kwargs) + super().__init__('WxWidgets', environment, kwargs) if not self.is_found: return self.requested_modules = self.get_requested(kwargs) @@ -593,7 +592,7 @@ class WxDependency(ConfigToolDependency): class VulkanDependency(ExternalDependency): def __init__(self, environment, kwargs): - super().__init__('vulkan', environment, None, kwargs) + super().__init__('vulkan', environment, kwargs) try: self.vulkan_sdk = os.environ['VULKAN_SDK'] |
