Re: [PATCH v4] scripts/tags.sh: use `find` for $ALLSOURCE_ARCHS generation
From: Masahiro Yamada
Date: Tue May 22 2018 - 01:07:28 EST
Hi.
The commit log is wrong.
2018-05-18 20:56 GMT+09:00 Joey Pabalinas <joeypabalinas@xxxxxxxxx>:
> Parsing `ls` is fragile at best and _will_ fail when $tree
> contains spaces.
This statement is wrong.
The cause of the problem is not using whatever command you use,
but missing quoting.
The following would work even if $tree contains spaces:
for arch in `ls "${tree}arch"`; do
BTW, what was your motivation of this patch?
Does ${tree} contain spaces?
If the file path contains spaces, the top Makefile terminates it earlier.
Makefile:128: *** main directory cannot contain spaces nor colons. Stop.
> Replace this with a find-generated string
> and directly assign it to $ALLSOURCE_ARCHS; a subshell is
> implied by $(), so `cd` doesn't affect the current working
> directory.
This patch no longer uses `cd`
> Signed-off-by: Joey Pabalinas <joeypabalinas@xxxxxxxxx>
>
> 1 file changed, 1 insertion(+), 10 deletions(-)
>
> diff --git a/scripts/tags.sh b/scripts/tags.sh
> index 78e546ff689c2d5f40..c08347fdeef12a7621 100755
> --- a/scripts/tags.sh
> +++ b/scripts/tags.sh
> @@ -26,24 +26,15 @@ else
> fi
>
> # ignore userspace tools
> ignore="$ignore ( -path ${tree}tools ) -prune -o"
>
> -# Find all available archs
> -find_all_archs()
> -{
> - ALLSOURCE_ARCHS=""
> - for arch in `ls ${tree}arch`; do
> - ALLSOURCE_ARCHS="${ALLSOURCE_ARCHS} "${arch##\/}
> - done
> -}
> -
> # Detect if ALLSOURCE_ARCHS is set. If not, we assume SRCARCH
> if [ "${ALLSOURCE_ARCHS}" = "" ]; then
> ALLSOURCE_ARCHS=${SRCARCH}
> elif [ "${ALLSOURCE_ARCHS}" = "all" ]; then
> - find_all_archs
> + ALLSOURCE_ARCHS="$(find "${tree}arch/" -mindepth 1 -maxdepth 1 -type d -printf ' %f')"
> fi
>
> # find sources in arch/$ARCH
> find_arch_sources()
> {
> --
> 2.17.0.rc1.35.g90bbd502d54fe92035.dirty
>
--
Best Regards
Masahiro Yamada