Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-11 Thread He Zhe



On 2018/12/11 22:17, Bruce Ashfield wrote:
> On Tue, Dec 11, 2018 at 2:49 AM He Zhe  wrote:
>>
>>
>> On 2018/12/11 00:58, Bruce Ashfield wrote:
>>>
>>> On Wed, Nov 21, 2018 at 9:06 AM >> > wrote:
>>>
>>> From: He Zhe mailto:zhe...@windriver.com>>
>>>
>>> This is a workaround for the following possible build failure.
>>>
>>> *** Compiler lacks asm-goto support.. Stop.
>>>
>>> When building linux-libc-headers we need to use binutils on build 
>>> machine.
>>> binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to 
>>> fail
>>> when running in an environment where /tmp is rarely used, e.g. in 
>>> docker.
>>>
>>> Signed-off-by: He Zhe >> >
>>> ---
>>> v2: Improve commit log
>>> v3: Shorten long lines as patchwork suggested
>>> v4: Shorten subject line...
>>>
>>>  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
>>> ++
>>>  .../linux-libc-headers/linux-libc-headers_4.18.bb 
>>>   |  4 ++
>>>  2 files changed, 74 insertions(+)
>>>  create mode 100644 
>>> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>>>
>>> diff --git 
>>> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>>>  
>>> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>>> new file mode 100644
>>> index 000..0d8fa80
>>> --- /dev/null
>>> +++ 
>>> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>>> @@ -0,0 +1,70 @@
>>> +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
>>> +From: He Zhe mailto:zhe...@windriver.com>>
>>> +Date: Wed, 21 Nov 2018 15:12:43 +0800
>>> +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
>>> + here-doc
>>> +
>>> +There was a bug of "as" in binutils that when it checks if the input 
>>> file and
>>> +output file are the same one, it would not check if they are on the 
>>> same block
>>> +device. The check is introduced by the following commit in v2.31.
>>> +
>>> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
>>> +67f846b59b32f3d704c601669409c2584383fea9 
>>> 
>>>
>>>
>>> Can you double check the links to the upstream changes ? They didn't work
>>> for me.
>> I guess that's due to the leading "+" prepended to the second line of the 
>> link.
>> It's part of the patch, not of the link.
> That's not what I'm seeing. Even when I select and paste the link, I'm getting
> a:  "400 - Invalid hash parameter" back from the upstream git repo.
>
>>>
>>>
>>> +
>>> +The here-doc usage in this script creates temporary file in /tmp. When 
>>> we run in
>>> +an environment where /tmp has rarely been used, the newly created 
>>> temporary file
>>> +may have a very low inode number. If the inode number was 6 which is 
>>> the same as
>>> +/dev/null, the as would wrongly think the input file and the output 
>>> file are the
>>> +same and report the following error.
>>> +
>>> +*** Compiler lacks asm-goto support.. Stop.
>>> +
>>> +One observed case happened in docker where the /tmp could be so rarely 
>>> used that
>>> +very low number inode may be allocated and triggers the error.
>>> +
>>> +The fix below for the bug only exists on the master branch of binutils 
>>> so far
>>> +and has not been released from upstream. As the convict is introduced 
>>> since
>>> +v2.31, only v2.31 is affected.
>>> +
>>> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
>>> +2a50366ded329bfb39d387253450c9d5302c3503 
>>> 
>>> +
>>> +When building linux-libc-headers we need to use "as" in binutils which 
>>> does not
>>> +contain the fix for the moment. To work around the error, we create a 
>>> fixed
>>> +temporary file to contain the program being tested.
>>> +
>>> +This patch also removes ">/dev/null 2>&1" so we will have more direct 
>>> error
>>> +information in case something else wrong happened.
>>> +
>>> +Upstream-Status: Inappropriate [A work around for binutils v2.31]
>>>
>>>
>>> It would be nice to have a way to test for the host binutils version, since 
>>> without it
>>> we have no way to know when we can stop carrying this change.
>>>
>>> Not that the change is all that complex or should cause any problems, it is 
>>> just
>>> very open ended without a check.
>>>
>>> Did you 

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-11 Thread Bruce Ashfield
On Tue, Dec 11, 2018 at 9:33 AM Martin Hundebøll  wrote:
>
>
>
> On 11/12/2018 15.17, Bruce Ashfield wrote:
> > On Tue, Dec 11, 2018 at 2:49 AM He Zhe  wrote:
> >>
> >>
> >>
> >> On 2018/12/11 00:58, Bruce Ashfield wrote:
> >>>
> >>>
> >>> On Wed, Nov 21, 2018 at 9:06 AM  >>> > wrote:
> >>>
> >>>  From: He Zhe mailto:zhe...@windriver.com>>
> >>>
> >>>  This is a workaround for the following possible build failure.
> >>>
> >>>  *** Compiler lacks asm-goto support.. Stop.
> >>>
> >>>  When building linux-libc-headers we need to use binutils on build 
> >>> machine.
> >>>  binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh 
> >>> to fail
> >>>  when running in an environment where /tmp is rarely used, e.g. in 
> >>> docker.
> >>>
> >>>  Signed-off-by: He Zhe  >>> >
> >>>  ---
> >>>  v2: Improve commit log
> >>>  v3: Shorten long lines as patchwork suggested
> >>>  v4: Shorten subject line...
> >>>
> >>>   ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
> >>> ++
> >>>   .../linux-libc-headers/linux-libc-headers_4.18.bb 
> >>>   |  4 ++
> >>>   2 files changed, 74 insertions(+)
> >>>   create mode 100644 
> >>> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >>>
> >>>  diff --git 
> >>> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >>>  
> >>> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >>>  new file mode 100644
> >>>  index 000..0d8fa80
> >>>  --- /dev/null
> >>>  +++ 
> >>> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >>>  @@ -0,0 +1,70 @@
> >>>  +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 
> >>> 2001
> >>>  +From: He Zhe mailto:zhe...@windriver.com>>
> >>>  +Date: Wed, 21 Nov 2018 15:12:43 +0800
> >>>  +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe 
> >>> for
> >>>  + here-doc
> >>>  +
> >>>  +There was a bug of "as" in binutils that when it checks if the 
> >>> input file and
> >>>  +output file are the same one, it would not check if they are on the 
> >>> same block
> >>>  +device. The check is introduced by the following commit in v2.31.
> >>>  +
> >>>  +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> >>>  +67f846b59b32f3d704c601669409c2584383fea9 
> >>> 
> >>>
> >>>
> >>> Can you double check the links to the upstream changes ? They didn't work
> >>> for me.
> >>
> >> I guess that's due to the leading "+" prepended to the second line of the 
> >> link.
> >> It's part of the patch, not of the link.
> >
> > That's not what I'm seeing. Even when I select and paste the link, I'm 
> > getting
> > a:  "400 - Invalid hash parameter" back from the upstream git repo.
>
> This link works for me:
> https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=67f846b59b32f3d704c601669409c2584383fea9
>
> Which is the same as the one in the patch without the + after the line
> break.

Ahahah. Right you are. I read that as the + before the first line, not
*between* the lines.

Bruce

>
> // Martin
>
> >>
> >>>
> >>>
> >>>
> >>>  +
> >>>  +The here-doc usage in this script creates temporary file in /tmp. 
> >>> When we run in
> >>>  +an environment where /tmp has rarely been used, the newly created 
> >>> temporary file
> >>>  +may have a very low inode number. If the inode number was 6 which 
> >>> is the same as
> >>>  +/dev/null, the as would wrongly think the input file and the output 
> >>> file are the
> >>>  +same and report the following error.
> >>>  +
> >>>  +*** Compiler lacks asm-goto support.. Stop.
> >>>  +
> >>>  +One observed case happened in docker where the /tmp could be so 
> >>> rarely used that
> >>>  +very low number inode may be allocated and triggers the error.
> >>>  +
> >>>  +The fix below for the bug only exists on the master branch of 
> >>> binutils so far
> >>>  +and has not been released from upstream. As the convict is 
> >>> introduced since
> >>>  +v2.31, only v2.31 is affected.
> >>>  +
> >>>  +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> >>>  +2a50366ded329bfb39d387253450c9d5302c3503 
> >>> 
> >>>  +
> >>>  +When building linux-libc-headers we need to use "as" in binutils 
> >>> which does not
> >>>  

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-11 Thread Martin Hundebøll



On 11/12/2018 15.17, Bruce Ashfield wrote:

On Tue, Dec 11, 2018 at 2:49 AM He Zhe  wrote:




On 2018/12/11 00:58, Bruce Ashfield wrote:



On Wed, Nov 21, 2018 at 9:06 AM mailto:zhe...@windriver.com>> wrote:

 From: He Zhe mailto:zhe...@windriver.com>>

 This is a workaround for the following possible build failure.

 *** Compiler lacks asm-goto support.. Stop.

 When building linux-libc-headers we need to use binutils on build machine.
 binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to 
fail
 when running in an environment where /tmp is rarely used, e.g. in docker.

 Signed-off-by: He Zhe mailto:zhe...@windriver.com>>
 ---
 v2: Improve commit log
 v3: Shorten long lines as patchwork suggested
 v4: Shorten subject line...

  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
++
  .../linux-libc-headers/linux-libc-headers_4.18.bb 
  |  4 ++
  2 files changed, 74 insertions(+)
  create mode 100644 
meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch

 diff --git 
a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
 
b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
 new file mode 100644
 index 000..0d8fa80
 --- /dev/null
 +++ 
b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
 @@ -0,0 +1,70 @@
 +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
 +From: He Zhe mailto:zhe...@windriver.com>>
 +Date: Wed, 21 Nov 2018 15:12:43 +0800
 +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
 + here-doc
 +
 +There was a bug of "as" in binutils that when it checks if the input file 
and
 +output file are the same one, it would not check if they are on the same 
block
 +device. The check is introduced by the following commit in v2.31.
 +
 +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
 +67f846b59b32f3d704c601669409c2584383fea9 



Can you double check the links to the upstream changes ? They didn't work
for me.


I guess that's due to the leading "+" prepended to the second line of the link.
It's part of the patch, not of the link.


That's not what I'm seeing. Even when I select and paste the link, I'm getting
a:  "400 - Invalid hash parameter" back from the upstream git repo.


This link works for me:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=67f846b59b32f3d704c601669409c2584383fea9

Which is the same as the one in the patch without the + after the line 
break.


// Martin







 +
 +The here-doc usage in this script creates temporary file in /tmp. When we 
run in
 +an environment where /tmp has rarely been used, the newly created 
temporary file
 +may have a very low inode number. If the inode number was 6 which is the 
same as
 +/dev/null, the as would wrongly think the input file and the output file 
are the
 +same and report the following error.
 +
 +*** Compiler lacks asm-goto support.. Stop.
 +
 +One observed case happened in docker where the /tmp could be so rarely 
used that
 +very low number inode may be allocated and triggers the error.
 +
 +The fix below for the bug only exists on the master branch of binutils so 
far
 +and has not been released from upstream. As the convict is introduced 
since
 +v2.31, only v2.31 is affected.
 +
 +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
 +2a50366ded329bfb39d387253450c9d5302c3503 

 +
 +When building linux-libc-headers we need to use "as" in binutils which 
does not
 +contain the fix for the moment. To work around the error, we create a 
fixed
 +temporary file to contain the program being tested.
 +
 +This patch also removes ">/dev/null 2>&1" so we will have more direct 
error
 +information in case something else wrong happened.
 +
 +Upstream-Status: Inappropriate [A work around for binutils v2.31]


It would be nice to have a way to test for the host binutils version, since 
without it
we have no way to know when we can stop carrying this change.

Not that the change is all that complex or should cause any problems, it is just
very open ended without a check.

Did you look into any conditional way to test the binutils in the recipe and 
only
patch if required ?


I have not tried but we can prepend the do_patch of 

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-11 Thread Bruce Ashfield
On Tue, Dec 11, 2018 at 2:49 AM He Zhe  wrote:
>
>
>
> On 2018/12/11 00:58, Bruce Ashfield wrote:
> >
> >
> > On Wed, Nov 21, 2018 at 9:06 AM  > > wrote:
> >
> > From: He Zhe mailto:zhe...@windriver.com>>
> >
> > This is a workaround for the following possible build failure.
> >
> > *** Compiler lacks asm-goto support.. Stop.
> >
> > When building linux-libc-headers we need to use binutils on build 
> > machine.
> > binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to 
> > fail
> > when running in an environment where /tmp is rarely used, e.g. in 
> > docker.
> >
> > Signed-off-by: He Zhe  > >
> > ---
> > v2: Improve commit log
> > v3: Shorten long lines as patchwork suggested
> > v4: Shorten subject line...
> >
> >  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
> > ++
> >  .../linux-libc-headers/linux-libc-headers_4.18.bb 
> >   |  4 ++
> >  2 files changed, 74 insertions(+)
> >  create mode 100644 
> > meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >
> > diff --git 
> > a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> >  
> > b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> > new file mode 100644
> > index 000..0d8fa80
> > --- /dev/null
> > +++ 
> > b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> > @@ -0,0 +1,70 @@
> > +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
> > +From: He Zhe mailto:zhe...@windriver.com>>
> > +Date: Wed, 21 Nov 2018 15:12:43 +0800
> > +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
> > + here-doc
> > +
> > +There was a bug of "as" in binutils that when it checks if the input 
> > file and
> > +output file are the same one, it would not check if they are on the 
> > same block
> > +device. The check is introduced by the following commit in v2.31.
> > +
> > +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> > +67f846b59b32f3d704c601669409c2584383fea9 
> > 
> >
> >
> > Can you double check the links to the upstream changes ? They didn't work
> > for me.
>
> I guess that's due to the leading "+" prepended to the second line of the 
> link.
> It's part of the patch, not of the link.

That's not what I'm seeing. Even when I select and paste the link, I'm getting
a:  "400 - Invalid hash parameter" back from the upstream git repo.

>
> >
> >
> >
> > +
> > +The here-doc usage in this script creates temporary file in /tmp. When 
> > we run in
> > +an environment where /tmp has rarely been used, the newly created 
> > temporary file
> > +may have a very low inode number. If the inode number was 6 which is 
> > the same as
> > +/dev/null, the as would wrongly think the input file and the output 
> > file are the
> > +same and report the following error.
> > +
> > +*** Compiler lacks asm-goto support.. Stop.
> > +
> > +One observed case happened in docker where the /tmp could be so rarely 
> > used that
> > +very low number inode may be allocated and triggers the error.
> > +
> > +The fix below for the bug only exists on the master branch of binutils 
> > so far
> > +and has not been released from upstream. As the convict is introduced 
> > since
> > +v2.31, only v2.31 is affected.
> > +
> > +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> > +2a50366ded329bfb39d387253450c9d5302c3503 
> > 
> > +
> > +When building linux-libc-headers we need to use "as" in binutils which 
> > does not
> > +contain the fix for the moment. To work around the error, we create a 
> > fixed
> > +temporary file to contain the program being tested.
> > +
> > +This patch also removes ">/dev/null 2>&1" so we will have more direct 
> > error
> > +information in case something else wrong happened.
> > +
> > +Upstream-Status: Inappropriate [A work around for binutils v2.31]
> >
> >
> > It would be nice to have a way to test for the host binutils version, since 
> > without it
> > we have no way to know when we can stop carrying this change.
> >
> > Not that the change is all that complex or should cause any problems, it is 
> > just
> > very open ended without a check.
> >
> > Did you look into any conditional way to test the 

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-10 Thread He Zhe


On 2018/12/11 00:58, Bruce Ashfield wrote:
>
>
> On Wed, Nov 21, 2018 at 9:06 AM  > wrote:
>
> From: He Zhe mailto:zhe...@windriver.com>>
>
> This is a workaround for the following possible build failure.
>
> *** Compiler lacks asm-goto support.. Stop.
>
> When building linux-libc-headers we need to use binutils on build machine.
> binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to 
> fail
> when running in an environment where /tmp is rarely used, e.g. in docker.
>
> Signed-off-by: He Zhe mailto:zhe...@windriver.com>>
> ---
> v2: Improve commit log
> v3: Shorten long lines as patchwork suggested
> v4: Shorten subject line...
>
>  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
> ++
>  .../linux-libc-headers/linux-libc-headers_4.18.bb 
>   |  4 ++
>  2 files changed, 74 insertions(+)
>  create mode 100644 
> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>
> diff --git 
> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>  
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> new file mode 100644
> index 000..0d8fa80
> --- /dev/null
> +++ 
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> @@ -0,0 +1,70 @@
> +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
> +From: He Zhe mailto:zhe...@windriver.com>>
> +Date: Wed, 21 Nov 2018 15:12:43 +0800
> +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
> + here-doc
> +
> +There was a bug of "as" in binutils that when it checks if the input 
> file and
> +output file are the same one, it would not check if they are on the same 
> block
> +device. The check is introduced by the following commit in v2.31.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +67f846b59b32f3d704c601669409c2584383fea9 
> 
>
>
> Can you double check the links to the upstream changes ? They didn't work
> for me.

I guess that's due to the leading "+" prepended to the second line of the link.
It's part of the patch, not of the link.

>
>  
>
> +
> +The here-doc usage in this script creates temporary file in /tmp. When 
> we run in
> +an environment where /tmp has rarely been used, the newly created 
> temporary file
> +may have a very low inode number. If the inode number was 6 which is the 
> same as
> +/dev/null, the as would wrongly think the input file and the output file 
> are the
> +same and report the following error.
> +
> +*** Compiler lacks asm-goto support.. Stop.
> +
> +One observed case happened in docker where the /tmp could be so rarely 
> used that
> +very low number inode may be allocated and triggers the error.
> +
> +The fix below for the bug only exists on the master branch of binutils 
> so far
> +and has not been released from upstream. As the convict is introduced 
> since
> +v2.31, only v2.31 is affected.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +2a50366ded329bfb39d387253450c9d5302c3503 
> 
> +
> +When building linux-libc-headers we need to use "as" in binutils which 
> does not
> +contain the fix for the moment. To work around the error, we create a 
> fixed
> +temporary file to contain the program being tested.
> +
> +This patch also removes ">/dev/null 2>&1" so we will have more direct 
> error
> +information in case something else wrong happened.
> +
> +Upstream-Status: Inappropriate [A work around for binutils v2.31]
>
>
> It would be nice to have a way to test for the host binutils version, since 
> without it
> we have no way to know when we can stop carrying this change. 
>
> Not that the change is all that complex or should cause any problems, it is 
> just
> very open ended without a check.
>
> Did you look into any conditional way to test the binutils in the recipe and 
> only
> patch if required ?

I have not tried but we can prepend the do_patch of linux-libc-headers to
check the host binutils' version and modify the SRCURI there depending on
the result.

But the users may never want to upgrade their host binutils and thus need this
workaround forever. So even we know what the version is on the host and
warn them to upgrade, it seems we still don't know when we can drop the

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-10 Thread Bruce Ashfield
On Wed, Nov 21, 2018 at 9:06 AM  wrote:

> From: He Zhe 
>
> This is a workaround for the following possible build failure.
>
> *** Compiler lacks asm-goto support.. Stop.
>
> When building linux-libc-headers we need to use binutils on build machine.
> binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to
> fail
> when running in an environment where /tmp is rarely used, e.g. in docker.
>
> Signed-off-by: He Zhe 
> ---
> v2: Improve commit log
> v3: Shorten long lines as patchwork suggested
> v4: Shorten subject line...
>
>  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70
> ++
>  .../linux-libc-headers/linux-libc-headers_4.18.bb  |  4 ++
>  2 files changed, 74 insertions(+)
>  create mode 100644
> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>
> diff --git
> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> new file mode 100644
> index 000..0d8fa80
> --- /dev/null
> +++
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> @@ -0,0 +1,70 @@
> +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
> +From: He Zhe 
> +Date: Wed, 21 Nov 2018 15:12:43 +0800
> +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
> + here-doc
> +
> +There was a bug of "as" in binutils that when it checks if the input file
> and
> +output file are the same one, it would not check if they are on the same
> block
> +device. The check is introduced by the following commit in v2.31.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +67f846b59b32f3d704c601669409c2584383fea9
> 
>

Can you double check the links to the upstream changes ? They didn't work
for me.



> +
> +The here-doc usage in this script creates temporary file in /tmp. When we
> run in
> +an environment where /tmp has rarely been used, the newly created
> temporary file
> +may have a very low inode number. If the inode number was 6 which is the
> same as
> +/dev/null, the as would wrongly think the input file and the output file
> are the
> +same and report the following error.
> +
> +*** Compiler lacks asm-goto support.. Stop.
> +
> +One observed case happened in docker where the /tmp could be so rarely
> used that
> +very low number inode may be allocated and triggers the error.
> +
> +The fix below for the bug only exists on the master branch of binutils so
> far
> +and has not been released from upstream. As the convict is introduced
> since
> +v2.31, only v2.31 is affected.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +2a50366ded329bfb39d387253450c9d5302c3503
> 
> +
> +When building linux-libc-headers we need to use "as" in binutils which
> does not
> +contain the fix for the moment. To work around the error, we create a
> fixed
> +temporary file to contain the program being tested.
> +
> +This patch also removes ">/dev/null 2>&1" so we will have more direct
> error
> +information in case something else wrong happened.
> +
> +Upstream-Status: Inappropriate [A work around for binutils v2.31]
>

It would be nice to have a way to test for the host binutils version, since
without it
we have no way to know when we can stop carrying this change.

Not that the change is all that complex or should cause any problems, it is
just
very open ended without a check.

Did you look into any conditional way to test the binutils in the recipe
and only
patch if required ?

Bruce



> +
> +Signed-off-by: He Zhe 
> +---
> + scripts/gcc-goto.sh | 7 ++-
> + 1 file changed, 6 insertions(+), 1 deletion(-)
> +
> +diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh
> +index 083c526..0aaf1b4 100755
> +--- a/scripts/gcc-goto.sh
>  b/scripts/gcc-goto.sh
> +@@ -3,7 +3,9 @@
> + # Test for gcc 'asm goto' support
> + # Copyright (C) 2010, Jason Baron 
> +
> +-cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y"
> ++TMPFILE=`mktemp -p .`
> ++
> ++cat << "END" > ${TMPFILE}
> + int main(void)
> + {
> + #if defined(__arm__) || defined(__aarch64__)
> +@@ -20,3 +22,6 @@ entry:
> +   return 0;
> + }
> + END
> ++
> ++$@ -x c ${TMPFILE} -c -o /dev/null && echo "y"
> ++rm ${TMPFILE}
> +--
> +2.7.4
> +
> diff --git a/meta/recipes-kernel/linux-libc-headers/
> linux-libc-headers_4.18.bb b/meta/recipes-kernel/linux-libc-headers/
> linux-libc-headers_4.18.bb
> index eb7bee7..00420aa 100644
> --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
> +++ 

Re: [OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-12-05 Thread He Zhe
Kindly ping.

Zhe

On 2018/11/21 22:06, zhe...@windriver.com wrote:
> From: He Zhe 
>
> This is a workaround for the following possible build failure.
>
> *** Compiler lacks asm-goto support.. Stop.
>
> When building linux-libc-headers we need to use binutils on build machine.
> binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to fail
> when running in an environment where /tmp is rarely used, e.g. in docker.
>
> Signed-off-by: He Zhe 
> ---
> v2: Improve commit log
> v3: Shorten long lines as patchwork suggested
> v4: Shorten subject line...
>
>  ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 
> ++
>  .../linux-libc-headers/linux-libc-headers_4.18.bb  |  4 ++
>  2 files changed, 74 insertions(+)
>  create mode 100644 
> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>
> diff --git 
> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
>  
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> new file mode 100644
> index 000..0d8fa80
> --- /dev/null
> +++ 
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
> @@ -0,0 +1,70 @@
> +From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
> +From: He Zhe 
> +Date: Wed, 21 Nov 2018 15:12:43 +0800
> +Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
> + here-doc
> +
> +There was a bug of "as" in binutils that when it checks if the input file and
> +output file are the same one, it would not check if they are on the same 
> block
> +device. The check is introduced by the following commit in v2.31.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +67f846b59b32f3d704c601669409c2584383fea9
> +
> +The here-doc usage in this script creates temporary file in /tmp. When we 
> run in
> +an environment where /tmp has rarely been used, the newly created temporary 
> file
> +may have a very low inode number. If the inode number was 6 which is the 
> same as
> +/dev/null, the as would wrongly think the input file and the output file are 
> the
> +same and report the following error.
> +
> +*** Compiler lacks asm-goto support.. Stop.
> +
> +One observed case happened in docker where the /tmp could be so rarely used 
> that
> +very low number inode may be allocated and triggers the error.
> +
> +The fix below for the bug only exists on the master branch of binutils so far
> +and has not been released from upstream. As the convict is introduced since
> +v2.31, only v2.31 is affected.
> +
> +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
> +2a50366ded329bfb39d387253450c9d5302c3503
> +
> +When building linux-libc-headers we need to use "as" in binutils which does 
> not
> +contain the fix for the moment. To work around the error, we create a fixed
> +temporary file to contain the program being tested.
> +
> +This patch also removes ">/dev/null 2>&1" so we will have more direct error
> +information in case something else wrong happened.
> +
> +Upstream-Status: Inappropriate [A work around for binutils v2.31]
> +
> +Signed-off-by: He Zhe 
> +---
> + scripts/gcc-goto.sh | 7 ++-
> + 1 file changed, 6 insertions(+), 1 deletion(-)
> +
> +diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh
> +index 083c526..0aaf1b4 100755
> +--- a/scripts/gcc-goto.sh
>  b/scripts/gcc-goto.sh
> +@@ -3,7 +3,9 @@
> + # Test for gcc 'asm goto' support
> + # Copyright (C) 2010, Jason Baron 
> + 
> +-cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y"
> ++TMPFILE=`mktemp -p .`
> ++
> ++cat << "END" > ${TMPFILE}
> + int main(void)
> + {
> + #if defined(__arm__) || defined(__aarch64__)
> +@@ -20,3 +22,6 @@ entry:
> + return 0;
> + }
> + END
> ++
> ++$@ -x c ${TMPFILE} -c -o /dev/null && echo "y"
> ++rm ${TMPFILE}
> +-- 
> +2.7.4
> +
> diff --git 
> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb 
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
> index eb7bee7..00420aa 100644
> --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
> +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
> @@ -9,5 +9,9 @@ SRC_URI_append_libc-musl = "\
>  file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \
> "
>  
> +SRC_URI_append = "\
> +file://0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch \
> +"
> +
>  SRC_URI[md5sum] = "bee5fe53ee1c3142b8f0c12c0d3348f9"
>  SRC_URI[sha256sum] = 
> "19d8bcf49ef530cd4e364a45b4a22fa70714b70349c8100e7308488e26f1eaf1"

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH v4] linux-libc-headers: Fix build failure by using fixed temporary file instead of pipe

2018-11-21 Thread zhe.he
From: He Zhe 

This is a workaround for the following possible build failure.

*** Compiler lacks asm-goto support.. Stop.

When building linux-libc-headers we need to use binutils on build machine.
binutils v2.31 introduces a bug that could cause scripts/gcc-goto.sh to fail
when running in an environment where /tmp is rarely used, e.g. in docker.

Signed-off-by: He Zhe 
---
v2: Improve commit log
v3: Shorten long lines as patchwork suggested
v4: Shorten subject line...

 ...-fixed-temporary-file-instead-of-pipe-for.patch | 70 ++
 .../linux-libc-headers/linux-libc-headers_4.18.bb  |  4 ++
 2 files changed, 74 insertions(+)
 create mode 100644 
meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch

diff --git 
a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
 
b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
new file mode 100644
index 000..0d8fa80
--- /dev/null
+++ 
b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch
@@ -0,0 +1,70 @@
+From 3bbea65e11918f8753e8006a2198b999cdb0af58 Mon Sep 17 00:00:00 2001
+From: He Zhe 
+Date: Wed, 21 Nov 2018 15:12:43 +0800
+Subject: [PATCH] scripts: Use fixed temporary file instead of pipe for
+ here-doc
+
+There was a bug of "as" in binutils that when it checks if the input file and
+output file are the same one, it would not check if they are on the same block
+device. The check is introduced by the following commit in v2.31.
+
+https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
+67f846b59b32f3d704c601669409c2584383fea9
+
+The here-doc usage in this script creates temporary file in /tmp. When we run 
in
+an environment where /tmp has rarely been used, the newly created temporary 
file
+may have a very low inode number. If the inode number was 6 which is the same 
as
+/dev/null, the as would wrongly think the input file and the output file are 
the
+same and report the following error.
+
+*** Compiler lacks asm-goto support.. Stop.
+
+One observed case happened in docker where the /tmp could be so rarely used 
that
+very low number inode may be allocated and triggers the error.
+
+The fix below for the bug only exists on the master branch of binutils so far
+and has not been released from upstream. As the convict is introduced since
+v2.31, only v2.31 is affected.
+
+https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=
+2a50366ded329bfb39d387253450c9d5302c3503
+
+When building linux-libc-headers we need to use "as" in binutils which does not
+contain the fix for the moment. To work around the error, we create a fixed
+temporary file to contain the program being tested.
+
+This patch also removes ">/dev/null 2>&1" so we will have more direct error
+information in case something else wrong happened.
+
+Upstream-Status: Inappropriate [A work around for binutils v2.31]
+
+Signed-off-by: He Zhe 
+---
+ scripts/gcc-goto.sh | 7 ++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh
+index 083c526..0aaf1b4 100755
+--- a/scripts/gcc-goto.sh
 b/scripts/gcc-goto.sh
+@@ -3,7 +3,9 @@
+ # Test for gcc 'asm goto' support
+ # Copyright (C) 2010, Jason Baron 
+ 
+-cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y"
++TMPFILE=`mktemp -p .`
++
++cat << "END" > ${TMPFILE}
+ int main(void)
+ {
+ #if defined(__arm__) || defined(__aarch64__)
+@@ -20,3 +22,6 @@ entry:
+   return 0;
+ }
+ END
++
++$@ -x c ${TMPFILE} -c -o /dev/null && echo "y"
++rm ${TMPFILE}
+-- 
+2.7.4
+
diff --git a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb 
b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
index eb7bee7..00420aa 100644
--- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
+++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.18.bb
@@ -9,5 +9,9 @@ SRC_URI_append_libc-musl = "\
 file://0001-include-linux-stddef.h-in-swab.h-uapi-header.patch \
"
 
+SRC_URI_append = "\
+file://0001-scripts-Use-fixed-temporary-file-instead-of-pipe-for.patch \
+"
+
 SRC_URI[md5sum] = "bee5fe53ee1c3142b8f0c12c0d3348f9"
 SRC_URI[sha256sum] = 
"19d8bcf49ef530cd4e364a45b4a22fa70714b70349c8100e7308488e26f1eaf1"
-- 
2.7.4

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core