All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
@ 2022-01-01 21:40 Giulio Benetti
  2022-01-04 17:15 ` Arnout Vandecappelle
  2022-07-21  3:55 ` James Hilliard
  0 siblings, 2 replies; 6+ messages in thread
From: Giulio Benetti @ 2022-01-01 21:40 UTC (permalink / raw)
  To: buildroot; +Cc: Giulio Benetti, Yann E . MORIN

Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
calling 'make printvars' or 'make show-vars', so let's refuse to execute
those recipes if Make 4.3 by adding 'check-make-version' recipe as
depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
---
 Makefile | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 0b8c7b2867..ac98b84425 100644
--- a/Makefile
+++ b/Makefile
@@ -1058,13 +1058,20 @@ ifeq ($(NEED_WRAPPER),y)
 	$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
 endif
 
+.PHONY: check-make-version
+check-make-version:
+ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
+	@echo "Make 4.3 doesn't support 'printvars' and 'show-vars' recipes"
+	@exit 1
+endif
+
 # printvars prints all the variables currently defined in our
 # Makefiles. Alternatively, if a non-empty VARS variable is passed,
 # only the variables matching the make pattern passed in VARS are
 # displayed.
 # show-vars does the same, but as a JSON dictionnary.
 .PHONY: printvars
-printvars:
+printvars: check-make-version
 	@:
 	$(foreach V, \
 		$(sort $(filter $(VARS),$(.VARIABLES))), \
@@ -1077,7 +1084,7 @@ printvars:
 
 .PHONY: show-vars
 show-vars: VARS?=%
-show-vars:
+show-vars: check-make-version
 	@:
 	$(info $(call clean-json, { \
 			$(foreach V, \
-- 
2.25.1

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
  2022-01-01 21:40 [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3 Giulio Benetti
@ 2022-01-04 17:15 ` Arnout Vandecappelle
  2022-07-21  3:55 ` James Hilliard
  1 sibling, 0 replies; 6+ messages in thread
From: Arnout Vandecappelle @ 2022-01-04 17:15 UTC (permalink / raw)
  To: Giulio Benetti, buildroot; +Cc: Yann E . MORIN



On 01/01/2022 22:40, Giulio Benetti wrote:
> Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
> calling 'make printvars' or 'make show-vars', so let's refuse to execute
> those recipes if Make 4.3 by adding 'check-make-version' recipe as
> depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.
> 
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

  Yeah, this has been bothering me for ages... I hope this gets fixed soon.


  Applied to master, thanks.

  Regards,
  Arnout

> ---
>   Makefile | 11 +++++++++--
>   1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 0b8c7b2867..ac98b84425 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1058,13 +1058,20 @@ ifeq ($(NEED_WRAPPER),y)
>   	$(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
>   endif
>   
> +.PHONY: check-make-version
> +check-make-version:
> +ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
> +	@echo "Make 4.3 doesn't support 'printvars' and 'show-vars' recipes"
> +	@exit 1
> +endif
> +
>   # printvars prints all the variables currently defined in our
>   # Makefiles. Alternatively, if a non-empty VARS variable is passed,
>   # only the variables matching the make pattern passed in VARS are
>   # displayed.
>   # show-vars does the same, but as a JSON dictionnary.
>   .PHONY: printvars
> -printvars:
> +printvars: check-make-version
>   	@:
>   	$(foreach V, \
>   		$(sort $(filter $(VARS),$(.VARIABLES))), \
> @@ -1077,7 +1084,7 @@ printvars:
>   
>   .PHONY: show-vars
>   show-vars: VARS?=%
> -show-vars:
> +show-vars: check-make-version
>   	@:
>   	$(info $(call clean-json, { \
>   			$(foreach V, \
> 
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
  2022-01-01 21:40 [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3 Giulio Benetti
  2022-01-04 17:15 ` Arnout Vandecappelle
@ 2022-07-21  3:55 ` James Hilliard
  2022-07-26 21:52   ` Giulio Benetti
  1 sibling, 1 reply; 6+ messages in thread
From: James Hilliard @ 2022-07-21  3:55 UTC (permalink / raw)
  To: Giulio Benetti; +Cc: Yann E . MORIN, buildroot

On Sat, Jan 1, 2022 at 2:40 PM Giulio Benetti
<giulio.benetti@benettiengineering.com> wrote:
>
> Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
> calling 'make printvars' or 'make show-vars', so let's refuse to execute
> those recipes if Make 4.3 by adding 'check-make-version' recipe as
> depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.

FYI autobuilder threads seem to die when this gets hit:
make: *** [Makefile:1056: check-make-version] Error 1
Process Process-12:
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/process.py", line 315, in _bootstrap
    self.run()
  File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
748, in run_instance
    self.run_one_build()
  File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
731, in run_one_build
    ret = self.do_reproducible_build()
  File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
524, in do_reproducible_build
    ret = self.check_reproducibility()
  File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
416, in check_reproducibility
    prefix = subprocess.check_output(["make", "--no-print-directory",
"O=%s" % self.outputdir,
  File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.10/subprocess.py", line 524, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['make',
'--no-print-directory',
'O=/home/autobuild/autobuild/instance-11/output-1', '-C',
'instance-11/buildroot', 'printvars', 'VARS=TARGET_CROSS']' returned
non-zero exit status 2.

>
> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
> ---
>  Makefile | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 0b8c7b2867..ac98b84425 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1058,13 +1058,20 @@ ifeq ($(NEED_WRAPPER),y)
>         $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
>  endif
>
> +.PHONY: check-make-version
> +check-make-version:
> +ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
> +       @echo "Make 4.3 doesn't support 'printvars' and 'show-vars' recipes"
> +       @exit 1
> +endif
> +
>  # printvars prints all the variables currently defined in our
>  # Makefiles. Alternatively, if a non-empty VARS variable is passed,
>  # only the variables matching the make pattern passed in VARS are
>  # displayed.
>  # show-vars does the same, but as a JSON dictionnary.
>  .PHONY: printvars
> -printvars:
> +printvars: check-make-version
>         @:
>         $(foreach V, \
>                 $(sort $(filter $(VARS),$(.VARIABLES))), \
> @@ -1077,7 +1084,7 @@ printvars:
>
>  .PHONY: show-vars
>  show-vars: VARS?=%
> -show-vars:
> +show-vars: check-make-version
>         @:
>         $(info $(call clean-json, { \
>                         $(foreach V, \
> --
> 2.25.1
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
  2022-07-21  3:55 ` James Hilliard
@ 2022-07-26 21:52   ` Giulio Benetti
  2022-07-27  8:38     ` Arnout Vandecappelle
  0 siblings, 1 reply; 6+ messages in thread
From: Giulio Benetti @ 2022-07-26 21:52 UTC (permalink / raw)
  To: James Hilliard; +Cc: Yann E . MORIN, buildroot

Hi James,

On 21/07/22 05:55, James Hilliard wrote:
> On Sat, Jan 1, 2022 at 2:40 PM Giulio Benetti
> <giulio.benetti@benettiengineering.com> wrote:
>>
>> Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
>> calling 'make printvars' or 'make show-vars', so let's refuse to execute
>> those recipes if Make 4.3 by adding 'check-make-version' recipe as
>> depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.
> 
> FYI autobuilder threads seem to die when this gets hit:
> make: *** [Makefile:1056: check-make-version] Error 1
> Process Process-12:
> Traceback (most recent call last):
>    File "/usr/lib/python3.10/multiprocessing/process.py", line 315, in _bootstrap
>      self.run()
>    File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
>      self._target(*self._args, **self._kwargs)
>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
> 748, in run_instance
>      self.run_one_build()
>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
> 731, in run_one_build
>      ret = self.do_reproducible_build()
>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
> 524, in do_reproducible_build
>      ret = self.check_reproducibility()
>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
> 416, in check_reproducibility
>      prefix = subprocess.check_output(["make", "--no-print-directory",
> "O=%s" % self.outputdir,
>    File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
>      return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
>    File "/usr/lib/python3.10/subprocess.py", line 524, in run
>      raise CalledProcessError(retcode, process.args,
> subprocess.CalledProcessError: Command '['make',
> '--no-print-directory',
> 'O=/home/autobuild/autobuild/instance-11/output-1', '-C',
> 'instance-11/buildroot', 'printvars', 'VARS=TARGET_CROSS']' returned
> non-zero exit status 2.

Do you have an autobuilder failure link?
So I can reproduce it here and find a work-around for it.

Thank you!
Best regards
-- 
Giulio Benetti
Benetti Engineering sas

> 
>>
>> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
>> ---
>>   Makefile | 11 +++++++++--
>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 0b8c7b2867..ac98b84425 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1058,13 +1058,20 @@ ifeq ($(NEED_WRAPPER),y)
>>          $(Q)$(TOPDIR)/support/scripts/mkmakefile $(TOPDIR) $(O)
>>   endif
>>
>> +.PHONY: check-make-version
>> +check-make-version:
>> +ifneq ($(filter $(RUNNING_MAKE_VERSION),4.3),)
>> +       @echo "Make 4.3 doesn't support 'printvars' and 'show-vars' recipes"
>> +       @exit 1
>> +endif
>> +
>>   # printvars prints all the variables currently defined in our
>>   # Makefiles. Alternatively, if a non-empty VARS variable is passed,
>>   # only the variables matching the make pattern passed in VARS are
>>   # displayed.
>>   # show-vars does the same, but as a JSON dictionnary.
>>   .PHONY: printvars
>> -printvars:
>> +printvars: check-make-version
>>          @:
>>          $(foreach V, \
>>                  $(sort $(filter $(VARS),$(.VARIABLES))), \
>> @@ -1077,7 +1084,7 @@ printvars:
>>
>>   .PHONY: show-vars
>>   show-vars: VARS?=%
>> -show-vars:
>> +show-vars: check-make-version
>>          @:
>>          $(info $(call clean-json, { \
>>                          $(foreach V, \
>> --
>> 2.25.1
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@buildroot.org
>> https://lists.buildroot.org/mailman/listinfo/buildroot

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
  2022-07-26 21:52   ` Giulio Benetti
@ 2022-07-27  8:38     ` Arnout Vandecappelle
  2022-07-30 12:22       ` Yann E. MORIN
  0 siblings, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle @ 2022-07-27  8:38 UTC (permalink / raw)
  To: Giulio Benetti, James Hilliard; +Cc: Yann E . MORIN, buildroot



On 26/07/2022 23:52, Giulio Benetti wrote:
> Hi James,
> 
> On 21/07/22 05:55, James Hilliard wrote:
>> On Sat, Jan 1, 2022 at 2:40 PM Giulio Benetti
>> <giulio.benetti@benettiengineering.com> wrote:
>>>
>>> Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
>>> calling 'make printvars' or 'make show-vars', so let's refuse to execute
>>> those recipes if Make 4.3 by adding 'check-make-version' recipe as
>>> depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.
>>
>> FYI autobuilder threads seem to die when this gets hit:
>> make: *** [Makefile:1056: check-make-version] Error 1
>> Process Process-12:
>> Traceback (most recent call last):
>>    File "/usr/lib/python3.10/multiprocessing/process.py", line 315, in _bootstrap
>>      self.run()
>>    File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
>>      self._target(*self._args, **self._kwargs)
>>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
>> 748, in run_instance
>>      self.run_one_build()
>>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
>> 731, in run_one_build
>>      ret = self.do_reproducible_build()
>>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
>> 524, in do_reproducible_build
>>      ret = self.check_reproducibility()
>>    File "/home/autobuild/buildroot-test/scripts/autobuild-run", line
>> 416, in check_reproducibility
>>      prefix = subprocess.check_output(["make", "--no-print-directory",
>> "O=%s" % self.outputdir,
>>    File "/usr/lib/python3.10/subprocess.py", line 420, in check_output
>>      return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
>>    File "/usr/lib/python3.10/subprocess.py", line 524, in run
>>      raise CalledProcessError(retcode, process.args,
>> subprocess.CalledProcessError: Command '['make',
>> '--no-print-directory',
>> 'O=/home/autobuild/autobuild/instance-11/output-1', '-C',
>> 'instance-11/buildroot', 'printvars', 'VARS=TARGET_CROSS']' returned
>> non-zero exit status 2.
> 
> Do you have an autobuilder failure link?
> So I can reproduce it here and find a work-around for it.

  It's the autobuilder script (from the buildroot-test repository) itself that 
crashes. I suspect it isn't able to send in its results after that. There is a 
separate process for each autobuilder instance, but I don't think they are 
restarted when they crash so eventually all instances will die.

  Note that this is only invoked if a reproducibility error was detected.

  @James: do like Thomas, install an earlier make on your system :-)

  Regards,
  Arnout
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3
  2022-07-27  8:38     ` Arnout Vandecappelle
@ 2022-07-30 12:22       ` Yann E. MORIN
  0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2022-07-30 12:22 UTC (permalink / raw)
  To: Arnout Vandecappelle; +Cc: Giulio Benetti, James Hilliard, buildroot

Arnout, Giulio, James, All,

On 2022-07-27 10:38 +0200, Arnout Vandecappelle spake thusly:
> On 26/07/2022 23:52, Giulio Benetti wrote:
> >On 21/07/22 05:55, James Hilliard wrote:
> >>On Sat, Jan 1, 2022 at 2:40 PM Giulio Benetti
> >><giulio.benetti@benettiengineering.com> wrote:
> >>>Make 4.3 is buggy and leads to a "Segmentation fault (core dumped)" when
> >>>calling 'make printvars' or 'make show-vars', so let's refuse to execute
> >>>those recipes if Make 4.3 by adding 'check-make-version' recipe as
> >>>depedendency of 'printvars' and 'show-vars' as suggested by Yann E. Morin.
> >>FYI autobuilder threads seem to die when this gets hit:
[--SNIP--]
> >Do you have an autobuilder failure link?
> >So I can reproduce it here and find a work-around for it.
>  It's the autobuilder script (from the buildroot-test repository) itself
> that crashes. I suspect it isn't able to send in its results after that.
> There is a separate process for each autobuilder instance, but I don't think
> they are restarted when they crash so eventually all instances will die.
> 
>  Note that this is only invoked if a reproducibility error was detected.
> 
>  @James: do like Thomas, install an earlier make on your system :-)

That will no longer ne necessary, as we now have a working workaround
for that, that I just pushed:

    5c54c3ef3db2 Makefile: workaround make 4.3 issue for 'printvars and 'show-vars'

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-07-30 12:22 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-01 21:40 [Buildroot] [PATCH] Makefile: disable 'printvars' and 'show-vars' recipes for Make 4.3 Giulio Benetti
2022-01-04 17:15 ` Arnout Vandecappelle
2022-07-21  3:55 ` James Hilliard
2022-07-26 21:52   ` Giulio Benetti
2022-07-27  8:38     ` Arnout Vandecappelle
2022-07-30 12:22       ` Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.