git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 2/4] ci: show error message of "p4 -V"

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 24, 2022, 16:10 UTC
Message-ID
<221124.86wn7knx1x.gmgdl@evledraar.gmail.com>
In-Reply-To
<20221124153934.12470-3-worldhello.net@gmail.com>
On Thu, Nov 24 2022, Jiang Xin wrote:
Show 31 quoted lines
> From: Jiang Xin <zhiyou.jx@alibaba-inc.com>
>
> When installing p4 as a dependency, we used to pipe output of "p4 -V" to
> validate the installation, but this would hide potential errors of p4.
> E.g.: A broken p4 installation fails to run.
>
> Add some instructions to show errors of command "p4 -V", so we can see
> why the command output doesn't match.
>
> Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
> ---
>  ci/install-dependencies.sh | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
> index f639263a62..291e49bdde 100755
> --- a/ci/install-dependencies.sh
> +++ b/ci/install-dependencies.sh
> @@ -83,9 +83,9 @@ esac
>  if type p4d >/dev/null 2>&1 && type p4 >/dev/null 2>&1
>  then
>  	echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)"
> -	p4d -V | grep Rev.
> +	p4d -V | grep Rev. || { echo >&2 "p4d: bad version"; p4d -V; exit 1; }
>  	echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
> -	p4 -V | grep Rev.
> +	p4 -V | grep Rev. || { echo >&2 "p4: bad version"; p4 -V; exit 1; }
>  else
>  	echo >&2 "WARNING: perforce wasn't installed, see above for clues why"
>  fi

I think it makes sense to detect this, but the specific remedy makes no sense to me.

I.e. as your CL's CI output shows the reason we want this is because you had a p4d (and p4?) that segfaulted. I can reproduce that locally as:

	wget --quiet https://cdist2.perforce.com/perforce/r16.2/bin.linux26x86_64/p4d -O p4d; chmod +x p4d; ./p4d
	Segmentation fault

But we had the initial command piped into Rev, so we wouldn't show that, just

	$ wget --quiet https://cdist2.perforce.com/perforce/r16.2/bin.linux26x86_64/p4d -O p4d; chmod +x p4d; ./p4d | grep Rev; echo $?
	1

So we want to show that it segfaults, but how it is useful once that command fails to pretend that it's a "bad version?" The issue is that the command can't show the version at all.

	$ { echo >&2 "p4d: bad version"; ./p4d -V; exit 1; }
	p4d: bad version
	Segmentation fault
	exit
I think this should just be a plain:
	echo "$(tput setaf 6)Perforce Server Version$(tput sgr0)"
        p4d -V
        echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
	p4 -V
As we're already under "set -e" (in ci/lib.sh).

I.e. I don't see why we need to work at making the output less verbose, and then if we fail run the command again.

If we really want to make it less verbose and avoid hiding segfault
messages perhaps we could filter out the stuff we don't care about?:
	
	$ ./p4d -V | sed -ne '/[Cc]opyright/d; /[Ll]icense/d; /http/d; /product/d; p'
	Perforce - The Fast Software Configuration Management System.
	Version of OpenSSL Libraries: OpenSSL 1.1.1q  5 Jul 2022
	Version of OpenLDAP Libraries: 2.4.59
	Version of Cyrus SASL Libraries: 2.1.27
	Using the 'SmartHeap' memory manager.
	Rev. P4D/LINUX26X86_64/2021.1/2313999 (2022/07/15).
	
But I don't see the point of that effort, we won't look at these trace
logs unless something fails, so just including the raw output seems most
sensible.
Previous: Jiang XinNext: Junio C Hamano
Message 34 of 47 in “Use fixed github-actions runner image”
  1. 0/2 Use fixed github-actions runner imageJiang Xin, Nov 23, 2022
  2. 1/2 github-actions: run gcc-8 on ubuntu-20.04 imageJiang Xin, Nov 23, 2022
  3. Johannes SchindelinNov 24, 2022
  4. 2/2 ci: upgrade version of p4Jiang Xin, Nov 23, 2022
  5. Johannes SchindelinNov 24, 2022
  6. Johannes SchindelinNov 24, 2022
  7. Johannes SchindelinNov 24, 2022
  8. Jiang XinNov 24, 2022
  9. Johannes SchindelinNov 24, 2022
  10. Jiang XinNov 24, 2022
  11. Johannes SchindelinNov 24, 2022
  12. 0/3 Fix broken CI on newer github-actions runner imageJiang Xin, Nov 24, 2022
  13. Johannes SchindelinNov 24, 2022
  14. Johannes SchindelinNov 24, 2022
  15. Jiang XinNov 24, 2022
  16. python 2 EOL (was: [PATCH v2 0/3] Fix broken CI on newer github-actions runner image)Ævar Arnfjörð Bjarmason, Nov 24, 2022
  17. Junio C HamanoNov 25, 2022
  18. 0/4 Fix broken CI on newer github-actions runner imageJiang Xin, Nov 24, 2022
  19. 0/4 Fix broken CI on newer github-actions runner imageJiang Xin, Nov 25, 2022
  20. 2/4 ci: remove the pipe after "p4 -V" to cache errorsJiang Xin, Nov 25, 2022
  21. Junio C HamanoNov 27, 2022
  22. Jiang XinNov 27, 2022
  23. 1/4 github-actions: run gcc-8 on ubuntu-20.04 imageJiang Xin, Nov 25, 2022
  24. Junio C HamanoNov 27, 2022
  25. 3/4 ci: p4 on Linux has the same version as on macOSJiang Xin, Nov 25, 2022
  26. Junio C HamanoNov 27, 2022
  27. 4/4 ci: install python on ubuntuJiang Xin, Nov 25, 2022
  28. Junio C HamanoNov 27, 2022
  29. Jiang XinNov 27, 2022
  30. Junio C HamanoNov 27, 2022
  31. 1/4 github-actions: run gcc-8 on ubuntu-20.04 imageJiang Xin, Nov 24, 2022
  32. Ævar Arnfjörð BjarmasonNov 24, 2022
  33. 2/4 ci: show error message of "p4 -V"Jiang Xin, Nov 24, 2022
  34. Ævar Arnfjörð BjarmasonNov 24, 2022
  35. Junio C HamanoNov 25, 2022
  36. 3/4 ci: p4 on Linux has the same version as on macOSJiang Xin, Nov 24, 2022
  37. 4/4 ci: install python on ubuntuJiang Xin, Nov 24, 2022
  38. 1/3 github-actions: run gcc-8 on ubuntu-20.04 imageJiang Xin, Nov 24, 2022
  39. Ævar Arnfjörð BjarmasonNov 24, 2022
  40. Junio C HamanoNov 25, 2022
  41. 2/3 ci: upgrade version of p4 to 21.2Jiang Xin, Nov 24, 2022
  42. Ævar Arnfjörð BjarmasonNov 24, 2022
  43. Jiang XinNov 24, 2022
  44. 3/3 ci: install python on ubuntuJiang Xin, Nov 24, 2022
  45. Ævar Arnfjörð BjarmasonNov 24, 2022
  46. Jiang XinNov 24, 2022
  47. Ævar Arnfjörð BjarmasonNov 24, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.