mirror of
https://git.yoctoproject.org/poky
synced 2026-07-27 19:37:10 +00:00
20728c7069
(From OE-Core rev: e589fc6d758689f7889b3ae50e800e51204a02c1) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
126 lines
5.6 KiB
Diff
126 lines
5.6 KiB
Diff
From baf7b94fec5a31b2d0cb162e43dbd28cc019f38e Mon Sep 17 00:00:00 2001
|
|
From: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
|
|
Date: Wed, 15 Nov 2017 15:05:01 +0100
|
|
Subject: [PATCH] native_bindir
|
|
|
|
Some libraries, like QT, have pre-processors that convert their input
|
|
files into something that the cross-compiler can process. We find the
|
|
path of those pre-processors via pkg-config-native instead of
|
|
pkg-config.
|
|
|
|
This path forces the use of pkg-config-native for host_bins arguments.
|
|
|
|
There are some discussions upstream to merge this patch, but I presonaly believe
|
|
that is is OE only. https://github.com/mesonbuild/meson/issues/1849#issuecomment-303730323
|
|
|
|
Upstream-Status: Inappropriate [OE specific]
|
|
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
|
|
|
|
---
|
|
mesonbuild/dependencies/base.py | 19 +++++++++++--------
|
|
mesonbuild/dependencies/ui.py | 6 +++---
|
|
2 files changed, 14 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
|
|
index 35f0175..b39cba6 100644
|
|
--- a/mesonbuild/dependencies/base.py
|
|
+++ b/mesonbuild/dependencies/base.py
|
|
@@ -184,7 +184,7 @@ class Dependency:
|
|
def get_exe_args(self, compiler):
|
|
return []
|
|
|
|
- def get_pkgconfig_variable(self, variable_name, kwargs):
|
|
+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
|
|
raise DependencyException('{!r} is not a pkgconfig dependency'.format(self.name))
|
|
|
|
def get_configtool_variable(self, variable_name):
|
|
@@ -247,7 +247,7 @@ class InternalDependency(Dependency):
|
|
self.sources = sources
|
|
self.ext_deps = ext_deps
|
|
|
|
- def get_pkgconfig_variable(self, variable_name, kwargs):
|
|
+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
|
|
raise DependencyException('Method "get_pkgconfig_variable()" is '
|
|
'invalid for an internal dependency')
|
|
|
|
@@ -670,15 +670,18 @@ class PkgConfigDependency(ExternalDependency):
|
|
return s.format(self.__class__.__name__, self.name, self.is_found,
|
|
self.version_reqs)
|
|
|
|
- def _call_pkgbin_real(self, args, env):
|
|
- cmd = self.pkgbin.get_command() + args
|
|
+ def _call_pkgbin_real(self, args, env, use_native=False):
|
|
+ if use_native:
|
|
+ cmd = [self.pkgbin.get_command()[0] + "-native"] + args
|
|
+ else:
|
|
+ cmd = self.pkgbin.get_command() + args
|
|
p, out, err = Popen_safe(cmd, env=env)
|
|
rc, out, err = p.returncode, out.strip(), err.strip()
|
|
call = ' '.join(cmd)
|
|
mlog.debug("Called `{}` -> {}\n{}".format(call, rc, out))
|
|
return rc, out, err
|
|
|
|
- def _call_pkgbin(self, args, env=None):
|
|
+ def _call_pkgbin(self, args, env=None, use_native=False):
|
|
# Always copy the environment since we're going to modify it
|
|
# with pkg-config variables
|
|
if env is None:
|
|
@@ -698,7 +701,7 @@ class PkgConfigDependency(ExternalDependency):
|
|
targs = tuple(args)
|
|
cache = PkgConfigDependency.pkgbin_cache
|
|
if (self.pkgbin, targs, fenv) not in cache:
|
|
- cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env)
|
|
+ cache[(self.pkgbin, targs, fenv)] = self._call_pkgbin_real(args, env, use_native)
|
|
return cache[(self.pkgbin, targs, fenv)]
|
|
|
|
def _convert_mingw_paths(self, args):
|
|
@@ -885,7 +888,7 @@ class PkgConfigDependency(ExternalDependency):
|
|
(self.name, out_raw))
|
|
self.link_args, self.raw_link_args = self._search_libs(out, out_raw)
|
|
|
|
- def get_pkgconfig_variable(self, variable_name, kwargs):
|
|
+ def get_pkgconfig_variable(self, variable_name, kwargs, use_native=False):
|
|
options = ['--variable=' + variable_name, self.name]
|
|
|
|
if 'define_variable' in kwargs:
|
|
@@ -898,7 +901,7 @@ class PkgConfigDependency(ExternalDependency):
|
|
|
|
options = ['--define-variable=' + '='.join(definition)] + options
|
|
|
|
- ret, out, err = self._call_pkgbin(options)
|
|
+ ret, out, err = self._call_pkgbin(options, use_native=use_native)
|
|
variable = ''
|
|
if ret != 0:
|
|
if self.required:
|
|
diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
|
|
index 6d784e6..73a9e13 100644
|
|
--- a/mesonbuild/dependencies/ui.py
|
|
+++ b/mesonbuild/dependencies/ui.py
|
|
@@ -330,7 +330,7 @@ class QtBaseDependency(ExternalDependency):
|
|
self.bindir = self.get_pkgconfig_host_bins(core)
|
|
if not self.bindir:
|
|
# If exec_prefix is not defined, the pkg-config file is broken
|
|
- prefix = core.get_pkgconfig_variable('exec_prefix', {})
|
|
+ prefix = core.get_pkgconfig_variable('exec_prefix', {}, use_native=True)
|
|
if prefix:
|
|
self.bindir = os.path.join(prefix, 'bin')
|
|
|
|
@@ -507,7 +507,7 @@ class Qt4Dependency(QtBaseDependency):
|
|
applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease']
|
|
for application in applications:
|
|
try:
|
|
- return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}))
|
|
+ return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application, {}, use_native=True))
|
|
except MesonException:
|
|
pass
|
|
|
|
@@ -517,7 +517,7 @@ class Qt5Dependency(QtBaseDependency):
|
|
QtBaseDependency.__init__(self, 'qt5', env, kwargs)
|
|
|
|
def get_pkgconfig_host_bins(self, core):
|
|
- return core.get_pkgconfig_variable('host_bins', {})
|
|
+ return core.get_pkgconfig_variable('host_bins', {}, use_native=True)
|
|
|
|
def get_private_includes(self, mod_inc_dir, module):
|
|
return _qt_get_private_includes(mod_inc_dir, module, self.version)
|