Blame view

recipes-devtools/meson/meson/0003-native_bindir.patch 5.51 KB
97e44238b   Eric Lee   Upgrade menson ve...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
  From e762d85c823adfefc27ba6128c7b997aa50166ce 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 6d3678f..90fdb80 100644
  --- a/mesonbuild/dependencies/base.py
  +++ b/mesonbuild/dependencies/base.py
  @@ -146,7 +146,7 @@ class Dependency:
       def need_threads(self):
           return False
   
  -    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):
  @@ -183,7 +183,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')
   
  @@ -523,15 +523,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() + "-native" + args
  +        else:
  +            cmd = self.pkgbin.get_command() + args
           p, out = Popen_safe(cmd, env=env)[0:2]
           rc, out = p.returncode, out.strip()
           call = ' '.join(cmd)
           mlog.debug("Called `{}` -> {}
  {}".format(call, rc, out))
           return rc, out
   
  -    def _call_pkgbin(self, args, env=None):
  +    def _call_pkgbin(self, args, env=None, use_native=False):
           if env is None:
               fenv = env
               env = os.environ
  @@ -540,7 +543,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):
  @@ -718,7 +721,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:
  @@ -731,7 +734,7 @@ class PkgConfigDependency(ExternalDependency):
   
               options = ['--define-variable=' + '='.join(definition)] + options
   
  -        ret, out = self._call_pkgbin(options)
  +        ret, out = 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 197d22c..c683d21 100644
  --- a/mesonbuild/dependencies/ui.py
  +++ b/mesonbuild/dependencies/ui.py
  @@ -285,7 +285,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')
   
  @@ -427,7 +427,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
   
  @@ -437,7 +437,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)