native/cross: make ar wrapper support to read options from file

Message ID 20211202083742.69650-1-hongxu.jia@windriver.com
State New
Headers show
Series native/cross: make ar wrapper support to read options from file | expand

Commit Message

Hongxu Jia Dec. 2, 2021, 8:37 a.m. UTC
If ar input params starts with @, it means to read options from file
$ ar -h
...
  @<file>      - read options from <file>
...

It failed to call ar wrapper to read options from file:
$ path_to/oe-core/scripts/native-intercept/ar @bazel-out/k8-opt/bin/external/llvm-project/llvm/libSupport.a-2.params
|path_to/oe-core/scripts/native-intercept/ar: invalid option -- '@'
| Usage: path_to/oe-core/scripts/native-intercept/ar [emulation options]
[-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...

If input params start with @, append option -D to argv list

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 scripts/native-intercept/ar | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jacob Kroon Dec. 2, 2021, 8:49 a.m. UTC | #1
On 12/2/21 09:37, Hongxu Jia wrote:
> If ar input params starts with @, it means to read options from file
> $ ar -h
> ...
>   @<file>      - read options from <file>
> ...
> 
> It failed to call ar wrapper to read options from file:
> $ path_to/oe-core/scripts/native-intercept/ar @bazel-out/k8-opt/bin/external/llvm-project/llvm/libSupport.a-2.params
> |path_to/oe-core/scripts/native-intercept/ar: invalid option -- '@'
> | Usage: path_to/oe-core/scripts/native-intercept/ar [emulation options]
> [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
> 
> If input params start with @, append option -D to argv list
> 
> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
> ---
>  scripts/native-intercept/ar | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/scripts/native-intercept/ar b/scripts/native-intercept/ar
> index dcc623e3ed..32f45171d6 100755
> --- a/scripts/native-intercept/ar
> +++ b/scripts/native-intercept/ar
> @@ -19,6 +19,8 @@ argv = sys.argv
>  if argv[1].startswith('--'):
>      # No modifier given
>      None
> +elif argv[1].startswith('@'):
> +    argv.append('-D')
>  else:
>      # remove the optional '-'
>      if argv[1][0] == '-':
> 

I am a little surprised this works, since "-D" would be placed after any
archive/member parameters. But if does, ok.

Otherwise maybe we should just give up if there is a '@' and fallback to
not modifying the args, unless we want to process the file itself in the
wrapper.

Jacob
Hongxu Jia Dec. 2, 2021, 8:59 a.m. UTC | #2
On 12/2/21 4:49 PM, Jacob Kroon wrote:
> [Please note: This e-mail is from an EXTERNAL e-mail address]
>
> On 12/2/21 09:37, Hongxu Jia wrote:
>> If ar input params starts with @, it means to read options from file
>> $ ar -h
>> ...
>>    @<file>      - read options from <file>
>> ...
>>
>> It failed to call ar wrapper to read options from file:
>> $ path_to/oe-core/scripts/native-intercept/ar @bazel-out/k8-opt/bin/external/llvm-project/llvm/libSupport.a-2.params
>> |path_to/oe-core/scripts/native-intercept/ar: invalid option -- '@'
>> | Usage: path_to/oe-core/scripts/native-intercept/ar [emulation options]
>> [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
>>
>> If input params start with @, append option -D to argv list
>>
>> Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
>> ---
>>   scripts/native-intercept/ar | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/scripts/native-intercept/ar b/scripts/native-intercept/ar
>> index dcc623e3ed..32f45171d6 100755
>> --- a/scripts/native-intercept/ar
>> +++ b/scripts/native-intercept/ar
>> @@ -19,6 +19,8 @@ argv = sys.argv
>>   if argv[1].startswith('--'):
>>       # No modifier given
>>       None
>> +elif argv[1].startswith('@'):
>> +    argv.append('-D')
>>   else:
>>       # remove the optional '-'
>>       if argv[1][0] == '-':
>>
> I am a little surprised this works, since "-D" would be placed after any
> archive/member parameters. But if does, ok.
I've several tries, and append -D works well

> Otherwise maybe we should just give up if there is a '@' and fallback to
> not modifying the args, unless we want to process the file itself in the
> wrapper.

This is my original trying, if above failed in some cases, we have to 
give up to support determinism for @

//Hongxu

> Jacob

Patch

diff --git a/scripts/native-intercept/ar b/scripts/native-intercept/ar
index dcc623e3ed..32f45171d6 100755
--- a/scripts/native-intercept/ar
+++ b/scripts/native-intercept/ar
@@ -19,6 +19,8 @@  argv = sys.argv
 if argv[1].startswith('--'):
     # No modifier given
     None
+elif argv[1].startswith('@'):
+    argv.append('-D')
 else:
     # remove the optional '-'
     if argv[1][0] == '-':