50 lines
2.3 KiB
Diff
50 lines
2.3 KiB
Diff
|
From 46dbe963aa6435591c87e788cdb54bc0daeac42e Mon Sep 17 00:00:00 2001
|
||
|
From: Alexander Kanavin <alex.kanavin@gmail.com>
|
||
|
Date: Mon, 19 Oct 2015 18:26:40 +0300
|
||
|
Subject: [PATCH] giscanner: add --use-binary-wrapper option
|
||
|
|
||
|
With this option, giscanner will use a wrapper executable to run
|
||
|
binaries it's producing, instead of running them directly. This
|
||
|
is useful when binaries are cross-compiled and cannot be run directly,
|
||
|
but they can be run using for example QEMU emulation.
|
||
|
|
||
|
Upstream-Status: Pending [review on oe-core list]
|
||
|
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
|
||
|
|
||
|
---
|
||
|
giscanner/scannermain.py | 14 ++++++++++++++
|
||
|
1 file changed, 14 insertions(+)
|
||
|
|
||
|
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
|
||
|
index ccb14e9..061def0 100644
|
||
|
--- a/giscanner/scannermain.py
|
||
|
+++ b/giscanner/scannermain.py
|
||
|
@@ -126,6 +126,9 @@ def _get_option_parser():
|
||
|
parser.add_option("", "--program",
|
||
|
action="store", dest="program", default=None,
|
||
|
help="program to execute")
|
||
|
+ parser.add_option("", "--use-binary-wrapper",
|
||
|
+ action="store", dest="wrapper", default=None,
|
||
|
+ help="wrapper to use for running programs (useful when cross-compiling)")
|
||
|
parser.add_option("", "--program-arg",
|
||
|
action="append", dest="program_args", default=[],
|
||
|
help="extra arguments to program")
|
||
|
@@ -418,6 +421,17 @@ def create_binary(transformer, options, args):
|
||
|
gdump_parser.get_error_quark_functions())
|
||
|
|
||
|
shlibs = resolve_shlibs(options, binary, options.libraries)
|
||
|
+ if options.wrapper:
|
||
|
+ # The wrapper needs the binary itself, not the libtool wrapper script,
|
||
|
+ # so we check if libtool has sneaked the binary into .libs subdirectory
|
||
|
+ # and adjust the path accordingly
|
||
|
+ import os.path
|
||
|
+ dir_name, binary_name = os.path.split(binary.args[0])
|
||
|
+ libtool_binary = os.path.join(dir_name, '.libs', binary_name)
|
||
|
+ if os.path.exists(libtool_binary):
|
||
|
+ binary.args[0] = libtool_binary
|
||
|
+ # Then prepend the wrapper to the command line to execute
|
||
|
+ binary.args = [options.wrapper] + binary.args
|
||
|
gdump_parser.set_introspection_binary(binary)
|
||
|
gdump_parser.parse()
|
||
|
return shlibs
|