* [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr
@ 2017-08-17 19:19 Yann E. MORIN
2017-08-17 22:08 ` Arnout Vandecappelle
2017-08-19 13:08 ` Thomas Petazzoni
0 siblings, 2 replies; 3+ messages in thread
From: Yann E. MORIN @ 2017-08-17 19:19 UTC (permalink / raw)
To: buildroot
Since 392b0a26f5 (toolchain-external: default BR2_TOOLCHAIN_EXTERNAL_PATH
to empty), calling 'make clean' or similar can yield a spurious stderr
message:
dirname: missing operand
Try 'dirname --help' for more information.
Which is definitely baffling and unsettling...
It turns out that it is pretty trivial to reproduce, and this defconfig
is just enough:
$ cat my-defconfig
BR2_TOOLCHAIN_EXTERNAL=y
$ make BR2_DEFCONFIG=$(pwd)/my-defconfig defconfig
$ make clean
dirname: missing operand
Try 'dirname --help' for more information.
[--snip--]
This is because the cross-compiler is not found in the PATH (and for
good reasons, I don't have it in the PATH, not even at all).
So, when the cross-compiler is not found in the path, we simply
continue as if all was good, and postpone the check to much later,
when we try to copy the toolchain libs...
So, use a make construct rather than calling to the shell: $(dir ...)
does not whine if passed nothing.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
---
Changes v1 -> v2:
- use $(dir ...) instead of $(shell dirname ...) (Arnout)
---
Note: it would be good to error out at this point, but as explained in
the commit log, we already error out a bit later when copying the
toolchain libs, and the check is easier done then than what we could
do here, because we'd have to guard with BR_BUILDING, and for good
measure, we'd also have to do the check when the tooolchain dir is
actually specified. But then this would duplicate the existing (but
later) checks, so we just don't bother...
---
toolchain/toolchain-external/pkg-toolchain-external.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toolchain/toolchain-external/pkg-toolchain-external.mk b/toolchain/toolchain-external/pkg-toolchain-external.mk
index 23cdf30b9f..dc0588c536 100644
--- a/toolchain/toolchain-external/pkg-toolchain-external.mk
+++ b/toolchain/toolchain-external/pkg-toolchain-external.mk
@@ -74,7 +74,7 @@ endif
ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)
ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
# if no path set, figure it out from path
-TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
+TOOLCHAIN_EXTERNAL_BIN := $(dir $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
endif
else
TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin
--
2.11.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr
2017-08-17 19:19 [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr Yann E. MORIN
@ 2017-08-17 22:08 ` Arnout Vandecappelle
2017-08-19 13:08 ` Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: Arnout Vandecappelle @ 2017-08-17 22:08 UTC (permalink / raw)
To: buildroot
On 17-08-17 21:19, Yann E. MORIN wrote:
> Since 392b0a26f5 (toolchain-external: default BR2_TOOLCHAIN_EXTERNAL_PATH
> to empty), calling 'make clean' or similar can yield a spurious stderr
> message:
> dirname: missing operand
> Try 'dirname --help' for more information.
>
> Which is definitely baffling and unsettling...
>
> It turns out that it is pretty trivial to reproduce, and this defconfig
> is just enough:
>
> $ cat my-defconfig
> BR2_TOOLCHAIN_EXTERNAL=y
>
> $ make BR2_DEFCONFIG=$(pwd)/my-defconfig defconfig
>
> $ make clean
> dirname: missing operand
> Try 'dirname --help' for more information.
> [--snip--]
>
> This is because the cross-compiler is not found in the PATH (and for
> good reasons, I don't have it in the PATH, not even at all).
>
> So, when the cross-compiler is not found in the path, we simply
> continue as if all was good, and postpone the check to much later,
> when we try to copy the toolchain libs...
>
> So, use a make construct rather than calling to the shell: $(dir ...)
> does not whine if passed nothing.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr
2017-08-17 19:19 [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr Yann E. MORIN
2017-08-17 22:08 ` Arnout Vandecappelle
@ 2017-08-19 13:08 ` Thomas Petazzoni
1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni @ 2017-08-19 13:08 UTC (permalink / raw)
To: buildroot
Hello,
On Thu, 17 Aug 2017 21:19:46 +0200, Yann E. MORIN wrote:
> Since 392b0a26f5 (toolchain-external: default BR2_TOOLCHAIN_EXTERNAL_PATH
> to empty), calling 'make clean' or similar can yield a spurious stderr
> message:
> dirname: missing operand
> Try 'dirname --help' for more information.
>
> Which is definitely baffling and unsettling...
>
> It turns out that it is pretty trivial to reproduce, and this defconfig
> is just enough:
>
> $ cat my-defconfig
> BR2_TOOLCHAIN_EXTERNAL=y
>
> $ make BR2_DEFCONFIG=$(pwd)/my-defconfig defconfig
>
> $ make clean
> dirname: missing operand
> Try 'dirname --help' for more information.
> [--snip--]
>
> This is because the cross-compiler is not found in the PATH (and for
> good reasons, I don't have it in the PATH, not even at all).
>
> So, when the cross-compiler is not found in the path, we simply
> continue as if all was good, and postpone the check to much later,
> when we try to copy the toolchain libs...
>
> So, use a make construct rather than calling to the shell: $(dir ...)
> does not whine if passed nothing.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
>
> ---
> Changes v1 -> v2:
> - use $(dir ...) instead of $(shell dirname ...) (Arnout)
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-08-19 13:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-17 19:19 [Buildroot] [PATCHv2] core/pkg-toolchain-external: quiesce spurious stderr Yann E. MORIN
2017-08-17 22:08 ` Arnout Vandecappelle
2017-08-19 13:08 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox