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

Re: [PATCH] Handle compiler versions containing a dash

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 24, 2023, 21:40 UTC
Message-ID
<xmqqo7nd9cy7.fsf@gitster.g>
In-Reply-To
<20230423091249.2591136-1-mh@glandium.org>
Mike Hommey <mh@glandium.org> writes:
Show 9 quoted lines
> The version reported by e.g. x86_64-w64-mingw32-gcc on Debian bullseye
> looks like:
>   gcc version 10-win32 20210110 (GCC)
>
> This ends up with detect-compiler failing with:
>   ./detect-compiler: 30: test: Illegal number: 10-win32
>
> This change removes the -win32 part by excluding the dash and everything
> that follows from the version.

This may help the "test "$version" -gt 0" check and $((version - 1)) to pass. It is not quite clear if/why it gives sensible results, though.

> ---
>  detect-compiler | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
Missing sign-off?
Show 10 quoted lines
> diff --git a/detect-compiler b/detect-compiler
> index 50087f5670..d961df5fb5 100755
> --- a/detect-compiler
> +++ b/detect-compiler
> @@ -17,7 +17,7 @@ get_family() {
>  }
>  
>  get_version() {
> -	get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/'
> +	get_version_line | sed 's/^.* version \([0-9][^ -]*\).*/\1/'

The original is bad enough in that it says "We take anything that begins with a digit up to (but not including) the first SP, and then it assumes that it is getting an integer. This one is not all that better in that it can still accept a garbage like "version 01xx-foo" and "test "$version" -gt 0" would fail the same way, no?

If we are sure that "version N-win32" is always equivalent to "version N" for the purpose of print_flags() helper function, it may be more prudent to allow the known-good ones, with something like

	# A string that begins with a digit up to the next SP
	ver=$(get_version_line | sed 's/^.* version \([0-9][^ ]*\).*/\1/')
	# There are known -variant suffixes that do not affect the
	# meaning of the main version number.  Strip them.
	ver=${ver%-win32}
	ver=${ver%-win64}
	...
	echo "$ver"
while keeping the ones that are not "known-to-be-good" as-is.

That way, non-numeric numbers that we do not know about how to interpret will continue to stop detect-compiler from giving a bogus answer, which would be better than silently accepting anything with dash and treat as if the string after the number does not make any difference.

One thing I am worried about is "10-prerelease" that is not quite "10" yet to be treated just like "10" and causing problems.

Thanks.
Previous: Mike HommeyNext: Mike Hommey
Message 2 of 3 in “Handle compiler versions containing a dash”
  1. Handle compiler versions containing a dashMike Hommey, Apr 23, 2023
  2. Junio C HamanoApr 24, 2023
  3. Handle some compiler versions containing a dashMike Hommey, Apr 26, 2023

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.