diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2018-01-14 18:50:51 +0000 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2018-01-15 20:28:26 +0000 |
commit | 638095125d98233c66832830e57433bd16c13573 (patch) | |
tree | f456528582c490d5794db58c414b59221bf4e8d9 | |
parent | 57cb59787112aac395343e98f5cc4686560e74c9 (diff) | |
download | meson-638095125d98233c66832830e57433bd16c13573.zip meson-638095125d98233c66832830e57433bd16c13573.tar.gz meson-638095125d98233c66832830e57433bd16c13573.tar.bz2 |
Same for pcap
-rw-r--r-- | mesonbuild/dependencies/misc.py | 37 | ||||
-rw-r--r-- | test cases/common/174 dependency factory/meson.build | 10 |
2 files changed, 27 insertions, 20 deletions
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index e46fb84..fc4bea5 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -811,35 +811,31 @@ class Python3Dependency(ExternalDependency): class PcapDependency(ExternalDependency): def __init__(self, environment, kwargs): super().__init__('pcap', environment, None, kwargs) - kwargs['required'] = False - if DependencyMethods.PKGCONFIG in self.methods: + + @classmethod + def _factory(cls, environment, kwargs): + methods = cls._process_method_kw(kwargs) + if DependencyMethods.PKGCONFIG in methods: try: pcdep = PkgConfigDependency('pcap', environment, kwargs) if pcdep.found(): - self.type_name = 'pkgconfig' - self.is_found = True - self.compile_args = pcdep.get_compile_args() - self.link_args = pcdep.get_link_args() - self.version = pcdep.get_version() - self.pcdep = pcdep - return + return pcdep except Exception as e: mlog.debug('Pcap not found via pkgconfig. Trying next, error was:', str(e)) - if DependencyMethods.CONFIG_TOOL in self.methods: + if DependencyMethods.CONFIG_TOOL in methods: try: ctdep = ConfigToolDependency.factory( 'pcap', environment, None, kwargs, ['pcap-config'], 'pcap-config') if ctdep.found(): - self.config = ctdep.config - self.type_name = 'config-tool' - self.compile_args = ctdep.get_config_value(['--cflags'], 'compile_args') - self.link_args = ctdep.get_config_value(['--libs'], 'link_args') - self.version = self.get_pcap_lib_version() - self.is_found = True - return + ctdep.compile_args = ctdep.get_config_value(['--cflags'], 'compile_args') + ctdep.link_args = ctdep.get_config_value(['--libs'], 'link_args') + ctdep.version = cls.get_pcap_lib_version(ctdep) + return ctdep except Exception as e: mlog.debug('Pcap not found via pcap-config. Trying next, error was:', str(e)) + return PcapDependency(environment, kwargs) + @staticmethod def get_methods(): if mesonlib.is_osx(): @@ -847,9 +843,10 @@ class PcapDependency(ExternalDependency): else: return [DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL] - def get_pcap_lib_version(self): - return self.compiler.get_return_value('pcap_lib_version', 'string', - '#include <pcap.h>', self.env, [], [self]) + @staticmethod + def get_pcap_lib_version(ctdep): + return ctdep.compiler.get_return_value('pcap_lib_version', 'string', + '#include <pcap.h>', ctdep.env, [], [ctdep]) class CupsDependency(ExternalDependency): diff --git a/test cases/common/174 dependency factory/meson.build b/test cases/common/174 dependency factory/meson.build index d564467..7736b41 100644 --- a/test cases/common/174 dependency factory/meson.build +++ b/test cases/common/174 dependency factory/meson.build @@ -19,3 +19,13 @@ dep = dependency('Vulkan', method: 'pkg-config', required: false) if dep.found() and dep.type_name() == 'pkgconfig' dep.get_pkgconfig_variable('prefix') endif + +dep = dependency('pcap', method: 'pkg-config', required: false) +if dep.found() and dep.type_name() == 'pkgconfig' + dep.get_pkgconfig_variable('prefix') +endif + +dep = dependency('pcap', method: 'config-tool', required: false) +if dep.found() and dep.type_name() == 'configtool' + dep.get_configtool_variable('prefix') +endif |