aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-01-08 13:23:52 -0800
committerDylan Baker <dylan@pnwbakers.com>2020-01-29 09:11:24 -0800
commitfd892ad7cec12a34287f65a57c44703a6f4e4119 (patch)
treeaba23134fa8670f3db8296c0db695833f4c1ddb4 /mesonbuild
parentf85d6cee6abd5d3f763240bcd0ab4e18daf60c95 (diff)
downloadmeson-fd892ad7cec12a34287f65a57c44703a6f4e4119.zip
meson-fd892ad7cec12a34287f65a57c44703a6f4e4119.tar.gz
meson-fd892ad7cec12a34287f65a57c44703a6f4e4119.tar.bz2
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')
-rw-r--r--mesonbuild/dependencies/base.py32
-rw-r--r--mesonbuild/dependencies/boost.py2
-rw-r--r--mesonbuild/dependencies/coarrays.py2
-rw-r--r--mesonbuild/dependencies/cuda.py2
-rw-r--r--mesonbuild/dependencies/dev.py10
-rw-r--r--mesonbuild/dependencies/hdf5.py2
-rw-r--r--mesonbuild/dependencies/misc.py30
-rw-r--r--mesonbuild/dependencies/mpi.py2
-rw-r--r--mesonbuild/dependencies/platform.py2
-rw-r--r--mesonbuild/dependencies/scalapack.py2
-rw-r--r--mesonbuild/dependencies/ui.py25
-rw-r--r--mesonbuild/modules/python.py2
12 files changed, 55 insertions, 58 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 7e563d6..db8a0a6 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 340a5a9..0f7216f 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 b0b6cf4..7f0b30e 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 7048e81..9c189be 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 0488b2b..da19e90 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 3bb1fda..fadd109 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 fd480c1..d4a505d 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 0754712..59ba0cd 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 e913ed4..6a32e36 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 8a58402..83f175c 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 c953951..38c51b8 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']
diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py
index 1e2b2ee..6644fd2 100644
--- a/mesonbuild/modules/python.py
+++ b/mesonbuild/modules/python.py
@@ -44,7 +44,7 @@ mod_kwargs -= set(['name_prefix', 'name_suffix'])
class PythonDependency(ExternalDependency):
def __init__(self, python_holder, environment, kwargs):
- super().__init__('python', environment, None, kwargs)
+ super().__init__('python', environment, kwargs)
self.name = 'python'
self.static = kwargs.get('static', False)
self.embed = kwargs.get('embed', False)