105 lines
3.1 KiB
Diff
105 lines
3.1 KiB
Diff
Support passing arguments to g-ir-scanner through a file
|
|
|
|
--- gobject-introspection-1.60.1/Makefile.introspection.orig 2019-04-20 19:49:44.101084900 +0200
|
|
+++ gobject-introspection-1.60.1/Makefile.introspection 2019-04-20 19:49:56.487025600 +0200
|
|
@@ -132,6 +132,7 @@
|
|
# needs to be added manually.
|
|
$(1): $$($(_gir_name)_FILES)
|
|
@ $(MKDIR_P) $(dir $(1))
|
|
+ @ echo $$^ > $(1).files
|
|
$(_gir_silent_scanner_prefix) $(_gir_default_scanner_env) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \
|
|
$(INTROSPECTION_SCANNER_ARGS) \
|
|
--namespace=$(_gir_namespace) \
|
|
@@ -148,7 +149,7 @@
|
|
$($(_gir_name)_CFLAGS) \
|
|
--cflags-end \
|
|
$($(_gir_name)_LDFLAGS) \
|
|
- $$^ \
|
|
+ --argfile=$(1).files \
|
|
--output $(1)
|
|
endef
|
|
|
|
--- a/giscanner/scannermain.py
|
|
+++ a/giscanner/scannermain.py
|
|
@@ -470,8 +470,9 @@ def write_output(data, options):
|
|
|
|
|
|
def scanner_main(args):
|
|
+ loaded_args = utils.maybe_load_args_from_file(args)
|
|
parser = _get_option_parser()
|
|
- (options, args) = parser.parse_args(args)
|
|
+ (options, args) = parser.parse_args(loaded_args)
|
|
|
|
if options.passthrough_gir:
|
|
passthrough_gir(options.passthrough_gir, sys.stdout)
|
|
--- gobject-introspection-1.58.1/giscanner/utils.py.orig 2018-11-05 19:58:03.000000000 +0100
|
|
+++ gobject-introspection-1.58.1/giscanner/utils.py 2018-11-18 12:24:53.599570100 +0100
|
|
@@ -29,6 +29,7 @@
|
|
import platform
|
|
import shutil
|
|
import time
|
|
+import shlex
|
|
import giscanner.pkgconfig
|
|
|
|
|
|
@@ -83,6 +84,59 @@
|
|
return name
|
|
|
|
|
|
+def cygmsys_mangle(arg):
|
|
+ shell = which(os.environ.get('SHELL', 'sh.exe'))
|
|
+ p = subprocess.Popen([shell, '-c', 'cmd //C echo ' + arg], stdout=subprocess.PIPE)
|
|
+ result, _ = p.communicate()
|
|
+ return result.decode('utf-8').rstrip('\n').rstrip('\r') if p.returncode == 0 else None
|
|
+
|
|
+
|
|
+def load_args_from_file(filename):
|
|
+ with open(filename, 'rb') as source:
|
|
+ contents = source.read().decode('UTF-8')
|
|
+ result = shlex.split(contents)
|
|
+ if os.name == 'nt':
|
|
+ args = []
|
|
+ for arg in result:
|
|
+ mangled = cygmsys_mangle(arg)
|
|
+ if mangled is not None:
|
|
+ args.append(mangled)
|
|
+ result = args
|
|
+ return result
|
|
+
|
|
+
|
|
+def maybe_load_args_from_file(args):
|
|
+ if os.name != 'nt':
|
|
+ return args
|
|
+
|
|
+ processed_args = []
|
|
+ skip = False
|
|
+ is_input_file = False
|
|
+ argfilelen = len('--argfile=')
|
|
+ for argn, arg in enumerate(args):
|
|
+ if skip:
|
|
+ processed_args.append(arg)
|
|
+ continue
|
|
+ elif arg == '--':
|
|
+ skip = True
|
|
+ processed_args.append(arg)
|
|
+ continue
|
|
+
|
|
+ if is_input_file:
|
|
+ processed_args.extend(load_args_from_file(arg))
|
|
+ is_input_file = False
|
|
+ continue
|
|
+
|
|
+ if arg == '--argfile' and argn + 1 < len(args):
|
|
+ is_input_file = True
|
|
+ continue
|
|
+ elif arg.startswith('--argfile=') and len(arg) > argfilelen:
|
|
+ processed_args.extend(load_args_from_file(arg[argfilelen:]))
|
|
+ continue
|
|
+ processed_args.append(arg)
|
|
+ return processed_args
|
|
+
|
|
+
|
|
_libtool_pat = re.compile("dlname='([A-z0-9\\.\\-\\+]+)'\n")
|
|
|
|
|