Merge pull request #140 from MathieuDuponchelle/fix_library_introspection

Fix library introspection
pull/142/head
jpakkane 10 years ago
commit 414c5f8c49
  1. 16
      dependencies.py
  2. 20
      modules/gnome.py

@ -90,6 +90,8 @@ class PkgConfigDependency(Dependency):
else:
pkgbin = 'pkg-config'
type_string = 'Native'
self.pkgbin = pkgbin
p = subprocess.Popen([pkgbin, '--modversion', name], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out = p.communicate()[0]
@ -142,6 +144,20 @@ class PkgConfigDependency(Dependency):
self.libs.append(lib)
def get_variable(self, variable_name):
p = subprocess.Popen([self.pkgbin, '--variable=%s' %
variable_name, self.name], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out = p.communicate()[0]
if p.returncode != 0:
if required:
raise DependencyException('%s dependency %s not found.' %
(type_string, self.name))
else:
variable = out.decode().strip()
mlog.debug ("return of subprocess : ", variable)
return variable
def get_modversion(self):
return self.modversion

@ -95,6 +95,17 @@ class GnomeModule:
scan_command += ['--pkg-export=%s' % pkg for pkg in pkgs]
else:
raise MesonException('Gir export packages must be str or list')
deps = None
if 'dependencies' in kwargs:
deps = kwargs.pop('dependencies')
if not isinstance (deps, list):
deps = [deps]
for dep in deps:
girdir = dep.held_object.get_variable ("girdir")
if girdir:
scan_command += ["--add-include-path=%s" % girdir]
inc_dirs = None
if kwargs.get('include_directories'):
inc_dirs = kwargs.pop('include_directories')
@ -121,7 +132,14 @@ class GnomeModule:
typelib_output = '%s-%s.typelib' % (ns, nsversion)
typelib_cmd = ['g-ir-compiler', scan_target, '--output', '@OUTPUT@']
if inc_dirs:
typelib_cmd += ['--includedir=%s' % inc for inc in inc_dirs.held_object.get_incdirs()]
typelib_cmd += ['--includedir=%s' % inc for inc in
inc_dirs.held_object.get_incdirs()]
if deps:
for dep in deps:
girdir = dep.held_object.get_variable ("girdir")
if girdir:
typelib_cmd += ["--includedir=%s" % girdir]
kwargs['output'] = typelib_output
kwargs['command'] = typelib_cmd
# Note that this can't be libdir, because e.g. on Debian it points to

Loading…
Cancel
Save